PDA

View Full Version : سوال: خطا در رویداد onDrawColumnCell



hamid_14
پنج شنبه 02 مرداد 1393, 13:42 عصر
سلام
میخواستم اگر فیلد جمع کوچکتر از 0 بود رنگ متن اون فیلد قرمز بشه ولی وقتی متن زیرو مینویسم ارور میده.


dbgrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

اینم ارور
121496

کد زیر درست کار میکنه ولی اینطوری دائما داره چک میکنه


if query1.FieldByName('Total').AsFloat < 0 then begin
DBGridEh1.Columns[1].Font.Color := clRed;
end
Else
begin
DBGridEh1.Columns[1].Font.Color := clBlack;
end;

farshid_82
جمعه 03 مرداد 1393, 11:59 صبح
احتمالا مشکل از dbgrid هست مجدد روی فرم قرار بدید.برای رنک یک ستون هم در کنار شرطی که گذاشتید از datacol استفاده کنید.

hamid_14
جمعه 03 مرداد 1393, 13:22 عصر
مرسی مشکل dbgrid همین بود و حل شد ولی نحوه استفاده از datacol نمی دونم میشه یک مثال بزنید.تشکر

farshid_82
جمعه 03 مرداد 1393, 14:56 عصر
فرض می کنیم فقط میخوای ستون 1 قرمز بشه


if (DataCol = 1) AND (query1.FieldByName('Total').AsFloat < 0) then begin
DBGridEh1.Canvas.Font.Color := clRed;
end
Else
begin
DBGridEh1.Canvas.Font.Color := clBlack;
end;


DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

khoshblagh
یک شنبه 05 مرداد 1393, 19:35 عصر
فرض می کنیم فقط میخوای ستون 1 قرمز بشه


if (DataCol = 1) AND (query1.FieldByName('Total').AsFloat < 0) then begin
DBGridEh1.Canvas.Font.Color := clRed;
end
Else
begin
DBGridEh1.Canvas.Font.Color := clBlack;
end;


DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
با سلام
میشه کد را طوری تغییر داد که به جای یک ستون مثلا 2 ستون از مجموعه ستونها به رنگ متمایزی در آورد.

farshid_82
یک شنبه 05 مرداد 1393, 19:48 عصر
سلام
بله میشه