| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как в DBGrid закрасить строку |
| Автор: stron 21.7.2003, 00:19 |
| if (условие) then begin with Form1.DBGrid1.Canvas do begin Brush.Color:=clMenu; Font.Color:=clBlack; end; end; Этот код закрашивает и текст в строке! А как сделать так, чтобы пользователь его увидел?? Буду очень признателен |
| Автор: Vex 21.7.2003, 00:57 |
| Можно узнать текст а потом вывести его поверх. |
| Автор: stron 21.7.2003, 02:13 |
| Не, не прокатит, т.к. при любом изменении таблицы вызывается такая процедура procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin ..... end; которая перекрашивает таблицу по defaultу( т.е. закрашивает всё нарисованное добро). |
| Автор: stron 21.7.2003, 02:14 |
| Да, кстати, текст в строке остаётся, только его пользователю не видно.... |
| Автор: Vex 21.7.2003, 02:23 |
| ИМХО, надо написать процедуру перекраски и вставлять ее во все события, которые ведут к изменению таблицы, геморно, конечно, но как еще это сделать я не знаю. Может поищите компоненты на торри.нет. Если вы собираетесь делать это всего один раз и в обозримом будущем вам это не понадобится, то можно сделать см. чуть выше. А если вы будете сталкиваться с этой проблемой регулярно, то напишите свой компонент, наследник от TDBGrid. |
| Автор: <Spawn> 21.7.2003, 05:43 | ||
Попробуй так:
Только поставь DefaultDrawing в False |
| Автор: stron 21.7.2003, 09:18 |
| Спасибо, очень помогли |