الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معرفة طول مدة الضغط على زر معين ؟؟

مغلق
بدأه الاحتراف في 16 نوفمبر 2004 · 2 رد · 479 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

لنفر ان لدي برنامج يقوم برسم نقاط على الشاشة ذات شكل معين وذلك من خلال استخدم لوحة المفاتيح ..

سؤالي :

هل يمكن تنفيذ اجراء الرسم طالما بقي المستخدم ضاغطا على زر المسافة مثلا ( Space ) ؟؟

أي أن لا يحتاج المستخدم لأن يرفع اصبعه عن الزر ومن ثم اعادة الضغط عليه لتكرار اجراء الرسم .

شكراً

#2

إستخدم الحدثان OnKeyDown و OnKeyUp (للفورم مثلا)

والمتحول Key هو الذي يدلك على المفتاح الذي تم ضغطة أو تم تحريرة

فإذا قمت بتعريف متحول بولياني (Boolean) عام . مثلا بعد الجزء :

var
  Form1: TForm1;
Key_Down:Boolean= false;

تستطيع ضبط قيمتة إلى True عند الضغط على الزر , وإعادتها False عند تحرير الزر أي :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_SPACE then
Key_Down:=true;

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_SPACE then
Key_Down:=false;

end;

ثم ضمن شفرة الرسم تختبر إذا كان المتحول True ترسم وإلا لاترسم . مثلا

ضمن شفرة OnMouseMove :

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Key_Down = true then
begin
//شفرة الرسم هنا
end;
end;

أما إذا كنت تقصد تكرار رسوم جاهزة بالضغط على الزر وتريد تحديد الفترة الزمنية بين كل تكرار والآخر . بإمكانك إستخدام مؤقت Timer مثلا بالزمن الذي تريدة . يتم تفعيلة في حدث ضغط الزر , وإلغائة في حدث تحرير الزر . أو يقوم بإختبار المتحول السابق Key_Down مثلا ...

أو بأي طريقة تراها مناسبة

تم تعديل هذه المشاركة بواسطة ORWA في 16 نوفمبر 2004 في 22:00

#3

السلام عليكم ..

شكرا على الرد ..

فعلاً هذه الطريقة عملية .. وقد كانت غائبة عن ذهني .. ;)

قد يكون السبب الى أنني كنت أعتقد بوجود دالة خاصة مثل الدالة الموجودة في ++VC والي تعطي رقما يتزايد باستمرار طالما بقي المستخدم ضاغطاً على الزر ..

شكرا لك ..

هذا الموضوع مغلق.

مواضيع مشابهة