delphi4arab منتديات دلفي للعرب

نسخة كاملة : تحسين شكل المكون DBgrid بتلوين الاعمدة او الاسطر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .

delphi4ever

السلام عليكم ورحمة الله

لإعطاء المكون DbGrid شكل خاص وجميل سوف نقوم بتلوين الأعمدة Colums أو الأسطر Lines الخاصة بهذا المكون ليصبح على الشكل التالي:

[صورة: dbgridht4.jpg]

ومن أجل عمل هذا نقوم بما يلي:
نقوم بزيادة السطر التالي مباشرة تحت
كود :
{$R *.DFM}

كود :
type AlternGrid = class(TCustomDBGrid);

ثم نذهب إلى الحدث OnDrawColumCell الخاص بالمكون DbGrid ونكتب الكود التالي:

كود :
var dataset:Tdataset; begin dataset:= (Sender as TDBGrid).DataSource.DataSet; with AlternGrid(Sender) do begin if (DataSet.RecNo mod 2 = 1 ) then Canvas.Brush.Color := $00E6D9C4 else Canvas.Brush.Color := $00EAF7FF; if DataLink.ActiveRecord = Row -1 then begin Canvas.Font.Color:=clwhite ; Canvas.Brush.Color:=clblack; end; end ; DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);

السورس في المرفقات
وبالتـــوفيق.Big Grin
و هذه إضافة مني لكيفية تلوين الأعمدة

[صورة: columnscolordh8.jpg]


كود :
{this source created by mahdi, a member of delphi4arab forum http://www.delphi4arab.net/forum/ تم إنجاز السورس من طرف مهدي العضو بمنتدى دلفي للعرب} procedure TForm1.FormCreate(Sender: TObject); var I: Integer; begin I:=0; while I<DBGrid1.Columns.Count-1 do begin DBGrid1.Columns[i].Color:=$00E6D9C4; // DBGrid1.Columns[i].Title.Color:=$00EAF7FF; I:=I+1; DBGrid1.Columns[i].Color:=$00EAF7FF; // DBGrid1.Columns[i].Title.Color:=$00E6D9C4; I:=I+1; end; end;
المشروع في المرفقات



ملاحظة: الكود لا يعمل مع الكود الأول الخاص بالأسطر
السلام عليكم ورحمة الله وبركاته

لاكن أخي إذا إستعملنا الفلترة Filtre في الطريقة الأولي فستختلط الألوان
السلام عليكم ورحمة الله وبركاته
يا إخواني هناك طريقة أبسط من ذلك وبدون كود وهي أن تقوم ( دوبل كليك ) على Dbgrid
فتظهر لك نافة ( Modification de Dbgrid1.Columns ) فتنقر بالزر الأيسر للماوس و تختار Ajouter
فيظهر سطر مكتوب فيه TColumn قم بتبديله ما هو موجود في قاعدة البينات ولكين Nom مثلا ثم تضف
آخر فليكن Adresse ثم تذهب ل: Inspecteur d'objets فأختر اللون المناسب عن طريق الضغط على Color
بالنسبة لـ: Nom أصفر مثلا وأضغط على Adresse وأختر المناسب له.........وشكرا.
و عليكم السلام و رحمة الله

إقتباس :يا إخواني هناك طريقة أبسط من ذلك وبدون كود

هذه الطريقة تصلح مع المثال الثاني فقط و لا تصلح مع الأول
ولجعل تجيلات السطر الذي يؤشر اليه المؤشر ملونة عليك بهذا الكود :

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
If gdFocused in State then
with (Sender as TDBGrid).Canvas do
begin

Brush.Color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Field.AsString);

end;

end;

end.
السلام عليكم
إليكم أول كود أضعه هنا

من يريد Dbgrid
شفاف Wink

كود :
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); var Text: string; Rct: TRect; begin Text := Field.AsString; Rct:= Rect; BitBlt(DBGrid1.Canvas.handle, Rct.left, Rct.top, Rct.right - Rct.left, Rct.bottom - Rct.top, Image1.Canvas.Handle, Rct.left + DBGrid1.Left, Rct.Top + DBGrid1.Top , SRCCOPY); SetBkModE(DBGrid1.Canvas.Handle, TRANSPARENT); DBGrid1.Canvas.Font.Style := [fsBold]; DBGrid1.Font.color := cLblue; DrawtextEx(DBGrid1.Canvas.Handle, PChar(Text), Length(Text), Rct, DT_WORDBREAK, nil); end;

)َضع Timage وراء Dbgrid )
في الحقيقة يقوم هذا البرنامج بنسخ كل Pixel من Image1 على Dbgrid1 هكذا يظهر ال Dbgrid وكأنه شفاف
بالتوفيق
شكرا matrix

في رأيي، من الأفضل " من يريد صورة في خلفية DBGrid "
@merouane على الرحب و السعد
"في رأيي، من الأفضل " من يريد صورة في خلفية DBGrid ""
ربما صحيح, لا كن في حالة إذا لم يكن image1 وراء Dbgrid تماما Wink "أنت تفهم قصدي"
حظ موفق
ما فائدة السطر الذى اضفناه فى البداية
PHP كود :
AlternGrid = class(TCustomDBGrid); 
فى الوقت الذى نجح مع الكود فى تلوين صف وترك الاخر بهذا الكود دون اضافة السطر السابق ذكره
PHP كود :
procedure TfrCataloge.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 =1 then
begin
DBGrid1
.Canvas.Brush.Color:=clHighlight;
 
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end; 
مع فائق شكرى