كيف تلوين القيم المكررة في DBGrid ؟
#1
هل يوجد كود يمكن تلوين الخلايا المكررة في dbgrid    أو مكون يقوم بالمهمة
الرد
#2
تلوين DBGrid بطريقة جميلة
https://delphi4arab.net/forum/showthread.php?tid=654
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#3
أقصد لوين الخلايا المكررة في dbgrid
الرد
#4

تلوين الخلايا يتم باستغلال الحدث OnDrawColumnCell
بالرابط السابق مرفق مثال +روابط متعلقة بتلوين خلايا Grid
هذا نصف الطريق، الباقي عليك... فكر.
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#5
السلام عليكم
هل يمكن عند إضافة بعض الخصائص مثل تلوين الديبي كريد هل يمكن جعلها مكون يضاف من برمجتي
أي كيف يمكنني برمجة مكون كالديبي قريد به إضافاتي الخاصة لكي لا أضطر كل مره أقوم بنفس الإجراءات
الرد
#6
كتب تعلم كتابة الكمبوننت
https://delphi4arab.net/forum/showthread.php?tid=2255
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • ALG2009
الرد
#7
لا توجد اجابة لتوين القيم المكررة في dbgrid
الرد
#8
امثلة

كود :
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;   DataCol: Integer; Column: TColumn; State: TGridDrawState); var   Field: TField; begin   // store the currently rendered cell's column assigned field reference   // (if any) to the local variable (there's quite expensive getter)   Field := Column.Field;   // if the rendered cell's column has assigned a field and this field's   // name is 'Clubs' (compared without case sensitivity), then, and only   // then change the brush color...   if Assigned(Field) and SameText(Field.FieldName, 'Clubs') then   begin     if Field.AsString = 'yes' then       DBGrid1.Canvas.Brush.Color := clRed     else       DBGrid1.Canvas.Brush.Color := clYellow;   end;   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;

او

كود :
if Column.FieldName = 'Clubs' then begin   if ADOTable1.FieldByName('Clubs').AsString = 'yes' then     DBGrid1.Canvas.Brush.Color := clRed   else     DBGrid1.Canvas.Brush.Color := clYellow; end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

اولا اعتقد تحتاج الى البحث بالجدول عن القيم المكررة ولنفرض انك حصلت على كلمات مثل (سيارة، منزل ، سوق )

بعدها مكان الحقل بالاسم Clubs ستقول له ان كان يساوي سيارة او منزل او سوق فاجعل اللون كذا .


اما مكون يدعم ذلك المكون EhLib يقوم بشي مماثل فقط انه يدمج الاعمدة للقيم المكررة ولا اعرف بالنسبة لتلوينها
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#9
ممكن كود في dbgrid لتلوين القيم المكررة   الأسماء مثلا 
الرد
#10
هذا مثال على السريع جربه


كود :
if (Column.Field.FieldName='name') and (Fname = Column.Field.Value) then begin DBGrid1.Canvas.Brush.Color := clRed ; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end else begin   DBGrid1.Canvas.Brush.Color := clWhite ; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; if (Column.Field.FieldName='name') then Fname:=Column.Field.Value;

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

يحتاج منك الى القليل من الضبط والاهتمام

ولو انني لا افضل هذا الاسلوب واظهار القيم المكررة بواسطة استعلام 


.rar   Dbgrid.rar (الحجم : 57.17 ك ب / التحميلات : 38)
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • tejmej
الرد


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


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