عند أضافة اى شئ أتحكم بة من خلال لوحة المفاتيح مثلاّ عند اضافة labelوضغط زر الايمن للسهم يتحرك label الى الايمن وكذلك الى الايسر والى أعلى والى أسفل
VK_RIGHT:
VK_LEFT:
VK_DOWN:
VK_UP:
السلام عليكم و رحمة الله تعالى و بركاته:
أخي جرب هذا المثال لعله ينفعك:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RIGHT then
label1.Left:=label1.Left+10;
if key=VK_LEFT then
label1.Left:=label1.Left-10;
if key=VK_UP then
label1.top:=label1.top-10;
if key=VK_DOWN then
label1.top:=label1.top+10;
end;
بالتوفيق
اخى ظهرلى أخطاء
Build
[COLOR="Red"] [Error] Unit1.pas(25): Undeclared identifier: 'FormKeyDown'
[Error] Unit1.pas(25): ';' expected but '(' found
[Error] Unit1.pas(26): ';' expected but ')' found
[Error] Unit1.pas(29): Undeclared identifier: 'label1'
[Error] Unit1.pas(29): Missing operator or semicolon
[Error] Unit1.pas(31): Missing operator or semicolon
[Error] Unit1.pas(31): Missing operator or semicolon
[Error] Unit1.pas(33): Missing operator or semicolon
[Error] Unit1.pas(33): Missing operator or semicolon
[Error] Unit1.pas(35): Missing operator or semicolon
[Error] Unit1.pas(35): Missing operator or semicolon
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
[/COLOR]
اختر Object Inspector ثم Event ثم OnKeyDown
![[صورة: Jc8v6.png]](http://im32.gulfup.com/Jc8v6.png)
ثم ضع الكود التالي :
PHP كود :
//makhlouf
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RIGHT then
label1.Left:=label1.Left+10;
if key=VK_LEFT then
label1.Left:=label1.Left-10;
if key=VK_UP then
label1.top:=label1.top-10;
if key=VK_DOWN then
label1.top:=label1.top+10;
end;
اها...
كان لازم أضعة فى الحدث KeyDown ..شكراّ جزيلاذ لك أخى.
ولكن هل يمكن أن تزيد من البيت شعراّ..**** أستخدم قاعدة if عند وصول label لنقطة معينة فى الفورم يتحقق then الامر.
karika2 كتب :اها...
كان لازم أضعة فى الحدث KeyDown ..شكراّ جزيلاذ لك أخى.
ولكن هل يمكن أن تزيد من البيت شعراّ..**** أستخدم قاعدة if عند وصول label لنقطة معينة فى الفورم يتحقق then الامر.
PHP كود :
if Label1.Left=SomeValue then
//Do Something..
السلام عليكم و رحمة الله تعالى و بركاته:
شكرا جزيلا اخي smp3 و بارك الله فيك و زادك علما نافعا
شكرا على مجهوداتك القيمة
شكرا أخى ..
وعارف انى ثقلت عليك بكثرة أسئلتى..
if Label1.Left=SomeValue then
if Label1.Left=100 then .
كنت ****ة أن أجعلة فى نقطة محددة بمعنى أن 100 بتمثلى الخط الافقى ... **** أن أظبط النقطة عند الخط العمودى واليك صورة للتوضيح..
كود :
http://www13.0zz0.com/2013/10/07/18/755725914.jpg
السلام عليكم و رحمة الله تعالى و بركاته:
أخي أفقيا تعامل مع الخاصية: Label1.Left أما عموديا فتعامل مع الخاصية: label1.top مثل:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RIGHT then
begin
label1.Left:=label1.Left+10;
if label1.Left>300 then
label1.Left:=300
end;
if key=VK_LEFT then
begin
label1.Left:=label1.Left-10;
if label1.Left<100 then
label1.Left:=100
end;
if key=VK_UP then
begin
label1.top:=label1.top-10;
if label1.Top<100 then
label1.Top:=100;
end;
if key=VK_DOWN then
begin
label1.top:=label1.top+10;
if label1.Top>300 then
label1.Top:=300;
end;
end;
في المثال تتحرك صعودا و نزولا يمينا و شمالا في مساحة بين 100 و 300 و انت غير كما شئت
بالتوفيق
شكراّ لكم جميعاّ دائماّ أستفاد من خبراتكم العالية :::