EasyDelphi Q&A
0 تصويتات
9 مشاهدات
table1 :champ1,champ2
table2 :champ3,champ2 

Dbgrid1.Datasource:=Datasourcetable1; 
Dbedit1.Datasource:=Datasourcetable1; 
Dbedit1.DataField:=table1.champ2; 
Dbedit2.DataField:=table2.champ2;
procedure Tmafiche.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin
Query1.SQL.Clear;
Query1.Close ;
Query1.SQL.Add(' select *') ;
Query1.SQL.Add(' from table2 ');
Query1.SQL.Add(' where champ2=:param1');
Query1.ParamByName('param1').AsInteger:=StrToInt(DBEdit6.Text);
Query1.Open;
end;


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

procedure Tmafiche.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin 
Query1.SQL.Clear;
Query1.Close ;
Query1.SQL.Add(' select *') ;
Query1.SQL.Add(' from table2 ');
Query1.SQL.Add(' where champ2=:param1');
Query1.ParamByName('param1').AsInteger:=StrToInt(DBEdit1.Text);
Query1.Open;
end;

المشكل هو Dbedit1.DataField و Dbedit2.DataField انهما دائما مختلفتان بتسجيل واحد أي : (Dbedit1.DataField)+1=Dbedit2.DataField

 

سُئل في تصنيف vcl بواسطة (160 نقاط) | 9 مشاهدات
0
سؤالك غير واضح .
انت لم تشرح ماذا تفعل وعن ماذا تتحدث .
لا نعرف ما هو الشكل الصحيح الذي يجب ان ينتهي به الحال . هل يجب ان تصبح dbEdit2 مثل dbEdit1 ام العكس ؟
وكلامك عن ان واحدة منها تعرض السجل التالي دائما . هذا يوحي بانهم مرتبطين مع بعض وحركة المؤشر في الجدول الاول تؤثر على الثاني .

حاول في المرة القادمة اضافة شرح لما قمت به وماذا تريد وكيف قمت بذلك . وما هي النتيجة التي يجب ان تكون . حتى نتمكن من فهم سؤالك اكثر

1 إجابة واحدة

0 تصويتات

السؤال غير واضح . لكن ساضع بعض الملاحظات التي وجدتها في الكود على امل ان تكون احداها هي سبب المشكلة .

١ ـ وجود DBEdit6 في . الاجراء KeyDown . التي قيمتها يعتمد عليها الكوري . تاكد من قيمتها .

٢ ـ وجود الاجرائن . keyDown و KeyPress بهذا الشكل . اراه غير طبيعي وغير منطقي والسبب

الاجراءات الثلاثة keyDown و KeyPress و KeyUp يتم تنفيذها بترتيب معين عند الضغط على ازرار لوحة المفاتيح . الحالة الاولى مثلا اضغط على مفتاح A . سيتم تنفيذ الاجراءات بهذا الترتيب 

KeyDown ثم KeyPress ثم KeyUp 

في الحالة الثانية هي ضغط مثلا Shift+A او اي مفتاح من المفاتيح المشابهة . فالتفيذ سيصبح  بهذا الشكل وبهذا الترتيب 

KyeDown   للـ Shift

KyeDown   للمفتاح A

KeyPress   للمفتاح A

KeyUp   لمفتاح A

keyUp  للـ Shift 

بالعودة للكود الموجود في سؤالك . الاجراء KeyDown يقوم باغلاق الكوري وفتحته بعبارة كوري اخرى . والاجراء KeyPress يقوم بنفس الشيء تقريبا . باختلاف الـ DBEdit6 . 

المشكلة هي ان الاجرئين سيتم نفيذهم مباشرة بدون فارق زمني بينهم . سينتهي الـ KeyDown وسيبدأ KeyPress بعده فورا .. سؤالي ما الفائدة من KeyDown في هذه الحالة ؟؟؟!!!

الكوري سيغلق ويفتح ثم يغلق ويفتح . لن تكون هناك فرصة لعمل اي شيء . لن تعرض للمستخدم ، لن يتم العمل عليها . لا شيء . غير التاخير الذي سيحصل من فتح الكوري واغلاقه .

 

٣  ـ لا ارى في الكود DBEdit2.Datasource . ارى فقط  DBEDit1.Datasource . هذه ملاحظة فقط . قد تكون مرتبط في النافذة وليس في الكود . لكن كما قلت في البداية هذه مجرد ملاحظات على الكود . لاني لم استطع فهم سؤالك وما تحاول السؤال عنه . 

 

تم الرد عليه بواسطة (28,680 نقاط)

اسئلة متعلقة

0 تصويتات
1 إجابة
0 تصويتات
0 إجابة
سُئل يوليو 20 في تصنيف vcl بواسطة Amar Gozim (11,030 نقاط) | 15 مشاهدات
0 تصويتات
1 إجابة
سُئل يونيو 6 في تصنيف vcl بواسطة Hafi Ski (320 نقاط) | 31 مشاهدات
0 تصويتات
2 إجابة
0 تصويتات
0 إجابة
سُئل مايو 13 في تصنيف vcl بواسطة Sabre Djelal (170 نقاط) | 40 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

441 سؤال
675 إجابة
1,216 تعليق
258 مستخدم