delphi4arab منتديات دلفي للعرب
تنسيق شرطي للمكون TDBEdit - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تنسيق شرطي للمكون TDBEdit (/showthread.php?tid=11403)

الصفحات: 1 2


تنسيق شرطي للمكون TDBEdit - صالح حمادي - 21-06-2021

السلام عليكم و رحمة الله تعالى و بركاته
هل فيه إمكانية وضع تنسيق شرطي للعنصر TDBEdit .
 فيتغير لون العنصر حسب القيمة الموجودة في هذه الأداة.


RE: تنسيق شرطي للمكون TDBEdit - Delphi4Us - 21-06-2021

وعليكم السلام ورحمة الله
ستحتاج الى شئ مثل

كود :
procedure TfrmPV.edtODKeyPress(Sender: TObject; var Key: char); begin   with Sender as TEdit do   ShowMessage('Begin');   case Key of   '0'..'9' : ShowMessage('0-9 was pressed.');   '.', ',' : ShowMessage('Period or Comma was pressed.');   #8 :  ;   #13 : begin             ShowMessage('#13 was pressed.');             Panel1.SelectNext(Sender as TWinControl, True, True);             Key := #0;         end;   #10 : begin             Panel1.SelectNext(Sender as TWinControl, True, True);             Key := #0;         end;   else         Key := #0;   end; end;

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


RE: تنسيق شرطي للمكون TDBEdit - صالح حمادي - 21-06-2021

بارك الله فيك أستاذنا الغالي
هذا المثال الذي وضعته أستاذنا يكون في حدث معين
في بعض الأحيان أفتح النموذج و أبدأ في تصفح السجلات بدون أن أعدل عليها
هنا أريد مثلا من كانت قيمته 1 يكون لونه أحمر و البقية بالأبيض و هكذا


RE: تنسيق شرطي للمكون TDBEdit - Delphi4Us - 21-06-2021

كود :
If Edit1.text = '1' then Edit1.color:=red else Edit1.color:=White

ببساطة في الحدث OnChange اختبر محتوى الاداة

اذا اردت ان تربط كل الادواة بحدث واحد

كود :
if (sender as Tedit).text='1' then (sender as Tedit).color:=red else (sender as Tedit).color:=White;



RE: تنسيق شرطي للمكون TDBEdit - صالح حمادي - 22-06-2021

لاحظ معي أستاذنا الكريم
أنا أستخدم المكون DBCtrlGrid لعرض حقلين أو أكثر فوق بعضهم في كل سطر
مثل مل هو موضح بالصورة التالية:
في هذه الحالة هل يمكن إضافة تنسيق شرطي لأنه عند تغيير لون مربع نص لسطر . تتغير معه جميع الأسطر
[صورة: attachment.php?aid=4496]


RE: تنسيق شرطي للمكون TDBEdit - Delphi4Us - 22-06-2021

أسف جدا فانت لم توضح هذا من اول مرة
هذه الاداة لن تساعدك في طلبك فهي لا تحوي الكثير من الاحداث للعمل عليها واستغلالها في المطلوب
لو كانت الاداة TDBgride لكان الامر بسيط جدا ويمكن استغلال احداثها

كود :
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;   DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Table1.FieldByName('Teacher').AsString = 'Joe' then   DBGrid1.Canvas.Brush.Color:=clRed; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);  end;

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


RE: تنسيق شرطي للمكون TDBEdit - صالح حمادي - 22-06-2021

شكرا جزيلا أخي و آسف جدا على الإزعاج
Tdbgride هذه الأداة لا تمكنني من عرض السجلات بالطريقة التي أريدها مثل الصورة أعلاه.
على العموم بارك الله فيك أستاذنا الغالي و معذرة أتعبتك معي.


RE: تنسيق شرطي للمكون TDBEdit - Delphi4Us - 22-06-2021

ولا يهمك لا تعب ولا شئ
اما بالنسبة لطريقة العرض التي تريدها ربما نجد حل لهذه المشكلة
توجد طريقة لعرض مكون ما او اي شئ بمكان اي حقل ربما يفيد فيما تبحث عنه
ولكن قبل هذا هل ينفع معك ان تجعل اداة بدل من اللون ان تكون قيمتها مثلا واحد او صفر او True او false
يمكنك اضافة اداة DBCheckBox مثلا واضافة حقل من نوع Calculate وبناء على قيمة ما تجعل الحقل True او False
اشعر ان هذا يحل لك المشكلة


RE: تنسيق شرطي للمكون TDBEdit - صالح حمادي - 23-06-2021

(22-06-2021, 07:40 PM)Delphi4Us كتب : توجد طريقة لعرض مكون ما او اي شئ بمكان اي حقل ربما يفيد فيما تبحث عنه
هل يمكن عرض أكثر من مكون في مكان حقل واحد

(22-06-2021, 07:40 PM)Delphi4Us كتب : ولكن قبل هذا هل ينفع معك ان تجعل اداة بدل من اللون ان تكون قيمتها مثلا واحد او صفر او True او false
يمكنك اضافة اداة DBCheckBox مثلا واضافة حقل من نوع Calculate وبناء على قيمة ما تجعل الحقل True او False
إن لم تنجح الفكرة الأولى سوف أستند إلى هذه الفكرة تبدو لا بأس بها


RE: تنسيق شرطي للمكون TDBEdit - Delphi4Us - 24-06-2021

اجل اي شئ لا ينجح معك في لغات البرمجة الاخرى اسأل عنه الدلفي
لاحظ هذا المثال

كود :
procedure TStdInfo.DBGrid1DrawColumnCell(Sender: TObject;   const Rect: TRect; DataCol: Integer; Column: TColumn;   State: TGridDrawState); var adomemo:Tdbmemo; begin   if (column.Field.DataType=ftMemo) or (column.Field.DataType=ftFmtMemo) then   begin     adoMemo:=TdbMemo.Create(self);     try     adomemo.Parent:=stdInfo;     adomemo.DataSource:=dm.DS_change;     dbgrid1.Canvas.Font.Color:=clBlue;     dbgrid1.Canvas.FillRect(rect);     DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top,adomemo.DataSource.DataSet.FieldValues['other']);     adomemo.Free;     Except       adomemo.Free;     end; end;

انه يضع مكون [size=small]Memo  [/size]في مكان حقل معين لان Dbgrid القياسية لا تعرض الصور او النصوص الطويلة
ماستفعله انت هو تصميم Panel بالمكونات المطلوبة او Frame وربطها بمصدر البيانات تم مكان الميمو Memo سوف تضع الـ Panel الخاص بكل
جرب لنرى