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

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

الصفحات: 1 2


تلوين dbgrid - tejmej - 27-09-2020

هل يوجد كود يمكن تلوين الخلايا المكررة في dbgrid    أو مكون يقوم بالمهمة


RE: تلوين dbgrid - محمد عبد العزيز - 27-09-2020

تلوين DBGrid بطريقة جميلة
https://delphi4arab.net/forum/showthread.php?tid=654


RE: تلوين dbgrid - tejmej - 27-09-2020

أقصد لوين الخلايا المكررة في dbgrid


RE: تلوين dbgrid - محمد عبد العزيز - 27-09-2020


تلوين الخلايا يتم باستغلال الحدث OnDrawColumnCell
بالرابط السابق مرفق مثال +روابط متعلقة بتلوين خلايا Grid
هذا نصف الطريق، الباقي عليك... فكر.



RE: تلوين dbgrid - ALG2009 - 27-09-2020

السلام عليكم
هل يمكن عند إضافة بعض الخصائص مثل تلوين الديبي كريد هل يمكن جعلها مكون يضاف من برمجتي
أي كيف يمكنني برمجة مكون كالديبي قريد به إضافاتي الخاصة لكي لا أضطر كل مره أقوم بنفس الإجراءات


RE: تلوين dbgrid - محمد عبد العزيز - 27-09-2020

كتب تعلم كتابة الكمبوننت
https://delphi4arab.net/forum/showthread.php?tid=2255


RE: تلوين dbgrid - tejmej - 22-10-2020

لا توجد اجابة لتوين القيم المكررة في dbgrid


RE: تلوين dbgrid - Delphi4Us - 26-10-2020

امثلة

كود :
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 يقوم بشي مماثل فقط انه يدمج الاعمدة للقيم المكررة ولا اعرف بالنسبة لتلوينها


القيم المكررة - tejmej - 13-07-2022

ممكن كود في dbgrid لتلوين القيم المكررة   الأسماء مثلا 


RE: كيف تلوين القيم المكررة في DBGrid ؟ - Delphi4Us - 15-07-2022

هذا مثال على السريع جربه


كود :
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)