ورود

View Full Version : تغییررنگ dbgrid



a-azad
دوشنبه 19 فروردین 1387, 21:42 عصر
سلام می خواستم وقتی مقدارفیلدwork=انجام شد رنگ رکورد قرمز شود
begin
'انجام شد'=if requestquery.FieldByName('work').aswidestring

then

;tntDBGrid1.Canvas.Font.Color:=clred
;DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top +2,field.AsString)

مشکل کجاست ;end

vcldeveloper
سه شنبه 20 فروردین 1387, 01:36 صبح
OnDrawColumnCell را جستجو کنید.

delphiprog3000
سه شنبه 20 فروردین 1387, 10:23 صبح
با اجازه جناب کشاورز.

اینم یه لینک در مورد مطلب مورد نظر


http://barnamenevis.org/forum/showthread.php?t=73606&highlight=ondrawcolumn



موفق باشید.............

dana74
جمعه 23 فروردین 1387, 08:49 صبح
سلام می خواستم وقتی مقدارفیلدwork=انجام شد رنگ رکورد قرمز شود
begin
'انجام شد'=if requestquery.FieldByName('work').aswidestring

then

;tntDBGrid1.Canvas.Font.Color:=clred
;DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top +2,field.AsString)

مشکل کجاست ;end
اینکه دوستان می فرمایند با رویداد OnDrawColumnCell حل میشه را نمیدانم.ولی با روش زیر مشکلت حل میشه:

1.ابتدا خاصیت DefaultDrawing مربوط به DBGrid را false کن.
2.سپس این کد را در رویداد OnDrawDataCell بنویس:



if Field.FieldName = 'work' then
if DBGrid1.DataSource.DataSet.FieldByName('work').AsS tring='انجام شد' Then
(Sender as TDBGrid).Canvas.Font.Color := clRed; { En rojo / in red }
(Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2,
Field.AsString);

موفق باشید!

vcldeveloper
جمعه 23 فروردین 1387, 15:31 عصر
2.سپس این کد را در رویداد OnDrawDataCell بنویس
رویداد OnDrawDataCell منسوخ شده، فقط برای backward compatibility در DBGrid باقی مونده و تضمینی وجود نداره که در ورژن های آینده هم پابرجا باشه. همون کد را برای رویداد OnDrawColumnCell بنویسید.