السلام عليكم ورحمة الله
لإعطاء المكون
DbGrid شكل خاص وجميل سوف نقوم بتلوين الأعمدة
Colums أو الأسطر
Lines الخاصة بهذا المكون ليصبح على الشكل التالي:
ومن أجل عمل هذا نقوم بما يلي:
نقوم بزيادة السطر التالي مباشرة تحت
كود :
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);
السورس في المرفقات
وبالتـــوفيق.

و هذه إضافة مني لكيفية تلوين الأعمدة
كود :
{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
شفاف
كود :
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 تماما

"أنت تفهم قصدي"
حظ موفق
ما فائدة السطر الذى اضفناه فى البداية
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;
مع فائق شكرى