PDA

View Full Version : مشكل در رويداد رنگي كردن DBGrid1DrawColumnCell



ali_abbasi22145
پنج شنبه 20 خرداد 1389, 13:26 عصر
Option\dgAlwasRowsShow Selection , Option\dgRowSelect\Trueدر دبیگرید ابتدا این کار انجام دادم

در رویدادهم کد زیر را نوشتم DBGrid1DrawColumnCell
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('blacklist _check').AsString)= '1' then
(Sender as tdbgrid).Canvas.Font.Color := clRed ;
که روی سطری که انتخاب شده آبی باشد و رکوردی که 'blacklist' است رنگ نوشته به رنگ قرمز شود ومشکلی ندارد.
مشکل اینجاست که اگر روی رکوردی که 'blacklist' است رنگ نوشته به رنگ قرمز است برویم رنگ قرمز سفید می شود.
به شکلهای زیر نگاه کنید:
halat adei
halat moshkel

vcldeveloper
پنج شنبه 20 خرداد 1389, 16:41 عصر
برای اینکه پارامتر State را در نظر نگرفتید. اون پارامتر مشخص میکنه که سطری که در حال رسم شدن هست، Highlight شده، یا اینکه یک سطر عادی هست. باید متناسب با مقدار State رسم خودتان را انجام بدید.

ali_abbasi22145
پنج شنبه 20 خرداد 1389, 18:16 عصر
برای اینکه پارامتر State را در نظر نگرفتید. اون پارامتر مشخص میکنه که سطری که در حال رسم شدن هست، Highlight شده، یا اینکه یک سطر عادی هست. باید متناسب با مقدار State رسم خودتان را انجام بدید.

سلام
ميشه كه يكي از دوستان كدي براي اينكار اينجا قراردهد؟

Felony
پنج شنبه 20 خرداد 1389, 20:05 عصر
به این لینک (http://delphi.about.com/od/usedbvcl/a/dbgridmouseover.htm) مراجعه کنید .

ali_abbasi22145
شنبه 22 خرداد 1389, 11:11 صبح
راه حل تست شده براي دوستان مي خواهند استفاده كنند:

if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('blacklist _check').AsString)= '1' then
(Sender as tdbgrid).Canvas.Font.Color := clRed ;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);