View Full Version : برگرداندن سلولهای DBGrid به حالت قبل از رنگ آمیزی ؟؟
Babak-Aghili
یک شنبه 24 مهر 1384, 00:02 صبح
سلام.
ok ... طبق معیار کاربر ، برخی سلولهای مورد نظرش را به رنگ دیگری درآوردیم که بهتر ببیندشون :لبخند:
حالا میخواهیم که دوباره آنها را به رنگ اولیه ، برگردانیم ...
چه باید کرد ... ؟ مثلا در شکل زیر ، سلولهای زرد رنگ را دوباره به رنگ اولیه شان برگردانیم ...
:افسرده:
http://tinypic.com/el1wd1.jpg
vcldeveloper
یک شنبه 24 مهر 1384, 02:26 صبح
لازم نیست کار خاصی انجام بدید. در کد زیر فقط خانه هایی از ستون دوم که مقدارشون بیشتر از 200 باشه، زرد میشند، مابقی خانه های همون ستون رنگ سفید خودشون (یا هر رنگی که بهشون میدید) رو دارند:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Sender as TDBGrid do
begin
//if second column is being draw
if DataCol = 1 then
if Column.Field.Value > 200 then
Canvas.Brush.Color := clYellow;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
Babak-Aghili
یک شنبه 24 مهر 1384, 09:13 صبح
جناب کشاورز ...
خیر ... همانطور که در شکل هم مشخص است ، این مرحله ای که شما کدش را زحت کشیده اید را من نوشته ام و سلولهای مورد نظر هم به رنگ زرد درآمده اند .... تا اینجا مشکلی ندارم ..
سوال اینه که حالا که به رنگ زرد درآمدند ، چگونه دوباره آنها را از حالت زرد خارج کنم و به رنگ اولیه درآورم ؟
ممنون .
vcldeveloper
دوشنبه 25 مهر 1384, 01:48 صبح
به کد زیر دقت کنید:
یک متغیر boolean تعریف کردیم. فیلد مورد نظر فقط موقعی زرد می شود که متغیر Highlight هم True باشد. با استفاده از یک دکمه مقدار متغیر Highlight را تغیر میدیم، نکته مهم اینه که بعد از تغییر Highlight یک بار هم DBGrid را Refresh کنیم تا تغییرات را بر روی فیلد اعمال کند:
var
Highlight : Boolean;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Sender as TDBGrid do
begin
if DataCol = 3 then
if Highlight and (Column.Field.AsInteger > 5) then
Canvas.Brush.Color := clYellow;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Highlight := not Highlight;
DBGrid1.Refresh;
end;
Babak-Aghili
دوشنبه 25 مهر 1384, 07:29 صبح
آهان ... این درسته ..
ممنون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.