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

نسخة كاملة : تفنـن في DBGrid
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

لتجميل DBgrid القديم الذي إذا رأيته تتذكر الويندووز 98
و لجعله يأخذ تيم الويندووز XP في XP و يأخذ تيم الويندووز Win7 فيWin7

كما في الصورة

[صورة: themeddbgrig.jpg]

إليكم الطريقة :
- من دلفي 7 إلى 2007
الشروط :
* وجود XPManifest
* إضف إلى مشروعك الملف المرفق أسفل ThemedDBGrid.pas

الرابط الأصلي للملف :
كود :
http://cc.embarcadero.com/item/24513

تلوين سطر بسطر :

كود :
[align=left]if not(gdSelected in State) then begin if ADOTable1.RecNo mod 2 =0 then DBGrid1.Canvas.Brush.Color := $00C6FFFF // لون السطر 1 else DBGrid1.Canvas.Brush.Color := $00B7FBD2; // لون السطر 2 end else begin DBGrid1.Canvas.Font.Color := clBlack; // لون خط السطر المختار DBGrid1.Canvas.Brush.Color := $00FFDFDF; // لون السطر المختار end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); [/align]

- دلفي 2010 لا داعي لإضافة الملف لأنه خاصيات جديدة

كود التلوين سطر بسطر :

كود :
[align=left]if not(gdSelected in State) then begin if ADOTable1.RecNo mod 2 =0 then DBGrid1.Canvas.Brush.Color := $00C6FFFF // لون السطر 1 else DBGrid1.Canvas.Brush.Color := $00B7FBD2; // لون السطر 2 end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); [/align]

أنظر الصورة :

[صورة: themed20101.jpg]
هذه الطريقة تعطينا النتيجة السابقة
و للتلوين المتدرج ( عدم استعمال XPManifest لتظهر النتيجة )

[صورة: themed20102.jpg]

تصبح النتيجة

[صورة: themed20103.jpg]

و السلام عليكم
جميل جدا أخي بارك الله فيك
لكنك إستعملت مكونات..
وعليكم السلام ورحمة الله وبركاته
ThemedDBGrid تعديل على المكون الأصلي TDBGrid لمبرمج ألماني andy يستخدم تقنية Interjected class لاحظ:
PHP كود :
TDBGrid = class(DBGrids.TDBGrid) // keep TDBGrid.ClassName = 'TDBGrid' 
مدونة المصدر:
كود :
http://andy.jgknet.de/blog/?page_id=206
أضفت عليها بعض اللمسات (Enter as tab, AutoSort, Draw Combobox...) سأطرحها حالما أنتهي منها.
السلام عليكم

أود أن أشكر الأستاذ kachwahed على المعلومات

إسمح لي ببعض الإضافات قبل أن تضع عليها لمساتك

* لوضع زر ... في الـ DBGrid كما في الصورة
[صورة: dbgeideditbt.jpg]

هذه هي الطريقة إضغط مرتين على الـ DBGrid ثم أكمل كما في الصورة
[صورة: paramr.jpg]

و للتحكم في هذا الزر بواسطة الحدث DBGrid1EditButtonClick في الـ DBGrid

يستخدم للتعديل مثلا لإظهار الفورم الخاصة بالتعديل
كود :
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject); begin Form2.showmodal; end;

* للترتيب حسب العنوان المضغوط دون إستعمال SQL أكتب هذا الكود
كود :
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin if ADODataSet1.IndexFieldNames = Column.Field.FieldName then ADODataSet1.IndexFieldNames := Column.Field.FieldName + ‘ DESC’ else ADODataSet1.IndexFieldNames := Column.Field.FieldName end;

* لمعرفة عدد الحقول المختارة ووضعها في label1

كود :
label1.Caption :=inttostr(DBGrid1.SelectedRows.Count) ;
السلام عليكم

كثيرا ما نحتاج لحفظ خصائص أعمدة الـ DBGrid بعد التعديل عليها أثناء تشغيل البرنامج
مثل : تعديل عرض العمود / اللون / العنوان / الإظهار و الإخفاء

لحفظ خصائص أعمدة الـ DBGrid نستعمل فقط هذا الكود ( يستعمل مثلا عند الخروج من الفورم )

كود :
dbgrid1.Columns.SaveToFile('Filename');
Filename هو إسم الملف الذي تحفظ فيه الخصائص

لجلب خصائص أعمدة الـ DBGrid المحفوظة سابقا نستعمل فقط هذا الكود ( يستعمل مثلا عند إظهار الفورم أو عند إنشائها )
مع إضافة شرط بسيط للتأكد من أن الملف موجود و لاتخرج لنا رسالة خطأ في حالة عدم وجوده

كود :
if FileExists('Filename') then dbgrid1.Columns.loadfromfile('Filename');
مثال على بعض الخصائص التي يتم تعديلها برمجيا

كود :
dbgrid1.Columns[0].Title.caption:='TitleName'; ... dbgrid1.Columns[0].Color:=clred; ... dbgrid1.Columns[0].Visible:=false; ...
ملاحظة : لا يمكن حفظ خصائص أكثر من DBGrid واحد في ملف واحد ( كل DBGrid و ملفه )

و السلام عليكم