Tors |
Отправлено: 21.01.2004, 11:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Естьтаблица:
t
(
id int not null primary key,
name varchar(20),
lname varchar(20)
flag varchar(5)
)
Как с помощью события OnDrawColumnCell вывести строку красным цветом если flag=false, а если true — зеленым, при том, что flag выводить не надо. |
|
Valdemar |
Отправлено: 21.01.2004, 13:37 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Я для таких целей использовал событие OnDrawDataCell. Тогда можно сделать так:
CODE |
void __fastcall TForm1::DBGrid1DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
((TStringGrid*)Sender)->Canvas->FillRect(Rect);
if (ADOTable1->FieldByName("flag")->AsString=="false")
((TDBGrid*)Sender)->Canvas->Font->Color=clRed;
else
((TDBGrid*)Sender)->Canvas->Font->Color=clGreen;
((TDBGrid*)Sender)->Canvas->TextRect(Rect,Rect.Left+2,Rect.Top+2,Field->AsString);
} | |
|
Tors |
Отправлено: 25.01.2004, 19:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
У DBGridEh (EhLib) не вызывается событие DrawDataCell |
|
** pasha |
Отправлено: 25.01.2004, 21:26 |
|
Не зарегистрирован
|
С чего вы это решили ? Вызывается
Проверить легко — бросьте на форму
Table, DataSource, DBGridEh свяжите их
вставьте указанный код,
откройте таблицу — сами увидите — все работает
таблица раскрасится красным/зеленым |
|
Tors |
Отправлено: 28.01.2004, 14:53 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Не вызывается!!!
Ставил и точку останова и
Caption="This working";
Я использую IBQuery, если это имеет значение.
И еще: у DBGridEh не работает правая кнопка у горизонтального
скролла? |
|
Admin |
Отправлено: 28.01.2004, 18:53 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Значит неправильно установлен EhLib.
Все в нем работает нормально.
Попробуйте этот код -
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGridEh1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumnEh *Column,
TGridDrawState State)
{
((TDBGridEh*)Sender)->Canvas->Font->Color = clRed;
((TDBGridEh*)Sender)->DefaultDrawColumnCell(Rect,DataCol,Column,State);
}
//---------------------------------------------------------------------------
|
если ваша таблица не станет вся красного цвета -
проблема скорее всего в установке EhLib.
|
|
Admin |
Отправлено: 28.01.2004, 19:01 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Или в onDrawDataCell
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGridEh1DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
((TDBGridEh*)Sender)->Canvas->Font->Color = clRed; // цвет шрифта
((TDBGridEh*)Sender)->Canvas->Brush->Color = clYellow; // цвет фона
((TDBGridEh*)Sender)->DefaultDrawDataCell(Rect, Field, State);
}
//---------------------------------------------------------------------------
|
|
|
Tors |
Отправлено: 29.01.2004, 17:12 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Спасибо, все работает!!! |
|