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

سؤال قائمة منسدلة على طريقة محررة شفرة دلفي

بدأه مراد23 في 9 سبتمبر 2010 · 2 رد · 709 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته من لا يشكر الناس لا يشكر الله .

لقد شجعني حصولي على إجابة غاية في الدقة

- من الأعضاء الكرام جزاهم الله كل خير- لأول سؤال لي أطرحه في منتديات هذا الموقع إلى وضع سؤال جديد .

السؤال :

قمت ببرمجة قائمة منسدلة عن طريق جدول DBGrid1 وهي تعمل لكن ينقصني بعض التعديل بتغير مفتاح مكان مفتاح

تنظر الصورة : ؟؟؟؟؟؟ أسف أنا جديد على المشاركة في المنتديات ولم أعرف كيف أدرج الصورة

قمت بوضع هذا الكود داخل حدث EditNomPrenomKeyDown

أنظر الكود

procedure TFormConsultationDonneur.EditNomPrenomKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin

    if DBGrid1.Visible =False then
   begin
    if (Shift=[ssCtrl]) and (Key =Ord(78))then
    begin
    DBGrid1.Visible :=True;
    Table1.Open;
    Table1.First;
    Table1.Filtered:=False;
    Table1.Filtered:=True;
    Table1.Filter:=
       'NomPrenom='''+AnsiUpperCase(EditNomPrenom.Text)+'*''';

    end;
  end;
end;

عند الضغط على مفتاح Ctrl مع الإبقاء عليه مضغوط ثم نضغط على حرف N في لوحة المفاتيح كي تسدل القائمة مرشحة جدول أسماء المتبرعين حسب حروف الخانة EditNomPrenom

الطريقة تعمل لكن أردت أن أجعلها مثل طريقة تكملة الشفرة في محرر الكود في دلفي انظر الصورة :

الصورة ؟؟؟؟؟؟

المهم أنا أريد أن أعرف كيف أغير الكود حتى يصبح المفتاح espace مكان المفتاح N معنى هذا الشرط هو عندا الضغط على مفتاح Ctrl مع الإبقاء عليه مضغوط ثم أضغط على مفتاح espace تسدل قائمة الأسماء المرشحة

طبعا مع مراعاة عدم كتابة المفتاح لحرف ابيض في الخانة Edit عندما يكون مفتاح Ctrl مضغوط بل تسدل قائمة ترشيح الأسماء وعندما نضغط مفتاح espace لوحده يعمل عادي ويطبع حرف أبيض في الخانة Edit .

ملاحظة ينظر : هذا الكود

procedure TFormConsultationDonneur.FormKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin

    if DBGrid1.Visible =True then
    begin
    if (Key in [Ord(38),Ord(40)])then
        begin
        DBGrid1.SetFocus;
        end;
    end;
end;

يقوم باختبار DBGrid هل هي مخفية إذا كانت غير مخفية يتنقل بمفتاح الأسهم العلوي والسفلي إلها وتصبح نشطة ... أي مفعلة .

من أرد أن يضيف عليه . أو يعقب لتعم الفائدة.

أرجو أن يكون سؤالي مفهوم .

وأكرر شكري للجميع .... وأتمنى لكم عيد فطر مبارك و سعيد .

ربي اشرح لي صدري و يسر لي أمري واحلل عقدة من لساني يفقهوا قولي، باسم الله الفتاح اللهم لا سهل إلا ما جعلته سهلاٌُ يا أرحم الراحمين.

#2

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

1. قم بتعريف متغير عام في بداية القسم implementation، مثلاً:

var
    CancelSpace: Boolean;

2. اكتب الأكواد التالية لمكون الـ Edit الذي تتعامل معه:

// OnKeyDown:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
    if (Shift = [ssCtrl]) and (Key = VK_SPACE) then begin
        CancelSpace := True;
        ' ...
        ' ضع هنا الكود الذي تريد تنفيذه
        ' ...
    end;
end;

// OnKeyPress
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if (Key = #32) and CancelSpace then begin
        Key := #0;
        Exit;
    end;
end;

// OnKeyUp:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
    CancelSpace := False;
end;

** ملاحظة بخصوص قيم المفاتيح و الدالة Ord:

إذا كنت ستستخدم قيم المفاتيح كأرقام مباشرة مثل 78 و 38 و 40 فلا داعي لاستعمال الدالة Ord لأن:

Ord(38)

هي 38 نفسها.

و بدلاً من حفظ قيم المفاتيح و البحث عنها كلما احتجت إليها، يمكنك استعمال الثوابت المقابلة لها و المعرفة في الوحدة Windows، و ذلك بكتابة:

VK_

ثم ضغط Ctrl+Space فتظهر لك قائمة بثوابت المفاتيح مثل VK_SPACE (مفتاح المسافة) أو VK_RETURN (مفتاح Enter) أو VK_DOWN (مفتاح السهم السفلي) أو VK_DELETE (مفتاح الحذف) ... إلخ.

نرجو الاستفادة و السلام.

تم تعديل هذه المشاركة بواسطة najy_zl في 9 سبتمبر 2010 في 22:27

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

السلام عليكم ورحمة الله وبركاته من لا يشكر الناس لا يشكر الله .

ما شاء الله أخي ناجي ما أروعك إجابتك مثلى وهي غاية ما أريد الحصول عليه

شكرا لك شكرا جزيلا .

والصورة : المرفقة توضح نتيجة خدمتك الجليلة .

post-233379-094584300 1284073432_thumb.g

كما لا يفوتني أن أنسى شكرك على توضيح طريقة ارفاق صورة في المشاركة .

المرفقات
647.GIF

ربي اشرح لي صدري و يسر لي أمري واحلل عقدة من لساني يفقهوا قولي، باسم الله الفتاح اللهم لا سهل إلا ما جعلته سهلاٌُ يا أرحم الراحمين.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…