![]() |
|
تنسيق شرطي للمكون 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 لعرض حقلين أو أكثر فوق بعضهم في كل سطر مثل مل هو موضح بالصورة التالية: في هذه الحالة هل يمكن إضافة تنسيق شرطي لأنه عند تغيير لون مربع نص لسطر . تتغير معه جميع الأسطر 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إن لم تنجح الفكرة الأولى سوف أستند إلى هذه الفكرة تبدو لا بأس بها 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 الخاص بكل جرب لنرى |