تفنـن في DBGrid
#1
السلام عليكم

لتجميل 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]

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


الملفات المرفقة
.rar   ThemedDBGrid.rar (الحجم : 4.95 ك ب / التحميلات : 544)
الرد
#2
جميل جدا أخي بارك الله فيك
لكنك إستعملت مكونات..
ومن يتهيب صعود الجبال يعش أبد الدهر بين التلال و الحفر
الرد
#3
وعليكم السلام ورحمة الله وبركاته
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...) سأطرحها حالما أنتهي منها.
الرد
#4
السلام عليكم

أود أن أشكر الأستاذ 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) ;
الرد
#5
السلام عليكم

كثيرا ما نحتاج لحفظ خصائص أعمدة الـ 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 و ملفه )

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


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


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