المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تفنـن في DBGrid


Lam.Abdeldjalil
10-07-2010, 12:41 PM
السلام عليكم

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

كما في الصورة

http://img204.imageshack.us/img204/4705/themeddbgrig.jpg

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

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

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

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);


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

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

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);


أنظر الصورة :

http://img401.imageshack.us/img401/6206/themed20101.jpg
هذه الطريقة تعطينا النتيجة السابقة
و للتلوين المتدرج ( عدم استعمال XPManifest لتظهر النتيجة )

http://img688.imageshack.us/img688/9944/themed20102.jpg

تصبح النتيجة

http://img195.imageshack.us/img195/7259/themed20103.jpg

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

khiro.alg
11-07-2010, 07:42 PM
جميل جدا أخي بارك الله فيك
لكنك إستعملت مكونات..

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

Lam.Abdeldjalil
14-07-2010, 10:26 PM
السلام عليكم

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

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

* لوضع زر ... في الـ DBGrid كما في الصورة
http://img823.imageshack.us/img823/483/dbgeideditbt.jpg

هذه هي الطريقة إضغط مرتين على الـ DBGrid ثم أكمل كما في الصورة
http://img375.imageshack.us/img375/7496/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) ;

Lam.Abdeldjalil
09-08-2010, 09:35 PM
السلام عليكم

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

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