كيف أتحكم فى المكون من خلال لوحة المفاتيح..؟
#1
عند أضافة اى شئ أتحكم بة من خلال لوحة المفاتيح مثلاّ عند اضافة labelوضغط زر الايمن للسهم يتحرك label الى الايمن وكذلك الى الايسر والى أعلى والى أسفل
VK_RIGHT:
VK_LEFT:
VK_DOWN:
VK_UP:
الرد
#2
السلام عليكم و رحمة الله تعالى و بركاته:
أخي جرب هذا المثال لعله ينفعك:
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;
بالتوفيق
الرد
#3
اخى ظهرلى أخطاء
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]
الرد
#4
اختر Object Inspector ثم Event ثم OnKeyDown
[صورة: 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; 
Open Your Source .. Open Your Mind
الرد
#5
اها...
كان لازم أضعة فى الحدث KeyDown ..شكراّ جزيلاذ لك أخى.
ولكن هل يمكن أن تزيد من البيت شعراّ..**** أستخدم قاعدة if عند وصول label لنقطة معينة فى الفورم يتحقق then الامر.
الرد
#6
karika2 كتب :اها...
كان لازم أضعة فى الحدث KeyDown ..شكراّ جزيلاذ لك أخى.
ولكن هل يمكن أن تزيد من البيت شعراّ..**** أستخدم قاعدة if عند وصول label لنقطة معينة فى الفورم يتحقق then الامر.

PHP كود :
if Label1.Left=SomeValue then 
//Do Something.. 
Open Your Source .. Open Your Mind
الرد
#7
السلام عليكم و رحمة الله تعالى و بركاته:
شكرا جزيلا اخي smp3 و بارك الله فيك و زادك علما نافعا
شكرا على مجهوداتك القيمة
الرد
#8
شكرا أخى ..
وعارف انى ثقلت عليك بكثرة أسئلتى..
if Label1.Left=SomeValue then
if Label1.Left=100 then .
كنت ****ة أن أجعلة فى نقطة محددة بمعنى أن 100 بتمثلى الخط الافقى ... **** أن أظبط النقطة عند الخط العمودى واليك صورة للتوضيح..
كود :
http://www13.0zz0.com/2013/10/07/18/755725914.jpg
الرد
#9
السلام عليكم و رحمة الله تعالى و بركاته:
أخي أفقيا تعامل مع الخاصية: 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 و انت غير كما شئت
بالتوفيق
الرد
#10
شكراّ لكم جميعاّ دائماّ أستفاد من خبراتكم العالية :::
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم