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

كود :
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 ان تقارن محتواها بالشرط المطلوب
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • صالح حمادي
الرد
#3
بارك الله فيك أستاذنا الغالي
هذا المثال الذي وضعته أستاذنا يكون في حدث معين
في بعض الأحيان أفتح النموذج و أبدأ في تصفح السجلات بدون أن أعدل عليها
هنا أريد مثلا من كانت قيمته 1 يكون لونه أحمر و البقية بالأبيض و هكذا
الرد
#4
كود :
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;
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • صالح حمادي
الرد
#5
Video 
لاحظ معي أستاذنا الكريم
أنا أستخدم المكون DBCtrlGrid لعرض حقلين أو أكثر فوق بعضهم في كل سطر
مثل مل هو موضح بالصورة التالية:
في هذه الحالة هل يمكن إضافة تنسيق شرطي لأنه عند تغيير لون مربع نص لسطر . تتغير معه جميع الأسطر
[صورة: attachment.php?aid=4496]


الملفات المرفقة
.jpg   201912230629372937.jpg (الحجم : 129.54 ك ب / التحميلات : 60)
الرد
#6
أسف جدا فانت لم توضح هذا من اول مرة
هذه الاداة لن تساعدك في طلبك فهي لا تحوي الكثير من الاحداث للعمل عليها واستغلالها في المطلوب
لو كانت الاداة 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 بدل منها فهذا اسهل لك
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • صالح حمادي
الرد
#7
شكرا جزيلا أخي و آسف جدا على الإزعاج
Tdbgride هذه الأداة لا تمكنني من عرض السجلات بالطريقة التي أريدها مثل الصورة أعلاه.
على العموم بارك الله فيك أستاذنا الغالي و معذرة أتعبتك معي.
الرد
#8
ولا يهمك لا تعب ولا شئ
اما بالنسبة لطريقة العرض التي تريدها ربما نجد حل لهذه المشكلة
توجد طريقة لعرض مكون ما او اي شئ بمكان اي حقل ربما يفيد فيما تبحث عنه
ولكن قبل هذا هل ينفع معك ان تجعل اداة بدل من اللون ان تكون قيمتها مثلا واحد او صفر او True او false
يمكنك اضافة اداة DBCheckBox مثلا واضافة حقل من نوع Calculate وبناء على قيمة ما تجعل الحقل True او False
اشعر ان هذا يحل لك المشكلة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • صالح حمادي
الرد
#9
(22-06-2021, 07:40 PM)Delphi4Us كتب : توجد طريقة لعرض مكون ما او اي شئ بمكان اي حقل ربما يفيد فيما تبحث عنه
هل يمكن عرض أكثر من مكون في مكان حقل واحد

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

كود :
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 الخاص بكل
جرب لنرى
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • صالح حمادي
الرد


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


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