Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выделение цветом ячейки в DBGrid [D5, D7, Paradox]


nik ©   (2004-06-30 10:09:00) 

как можно сделать определенную ячейку другим цветом
на пример если в данной ячейке слово "зеленый" то ячейка зеленая а если слово "красный" то она красная


ЮЮ   (2004-07-13 03:33:00) [1]

Поставь DBGrid1.DefaultDrawing = false, а в конце обработчика добавь:

TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);


nik   (2004-07-12 13:39:00) [2]

to Соловьев
Спасибо за ссылку она решила все мои вопросы, относительно выделения!!!
Это способ выделения когда на данной ячейке стоит курсор

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if ADOTable1.FieldByName('S_DATE').AsString = '' then
 DBGrid1.Canvas.Font.Color := clred;
end;



procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if ADOTable1.FieldByName('S_DATE').AsString = '' then

если необходимо выделять только данную ячейку то добавляем еще одно условие

 if Column.FieldName = 'S_DATE' then


with  DBGrid1.Canvas do
begin
 Brush.Color:=clGreen;
 Font.Color:=clWhite;
 FillRect(Rect);
 TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
end;
end;

to ЮЮ
нет данный код ни в каком if болие не замешан. (в иных порочных связях тоже :-) )

to _ALEXey_  я ещё не доконца разобрался с обработчиками но по моему
OnDrawColumnCell - влияет на внешний вид ячейки, а
OnDrawDataCell   - влияет на содержимое ячейки,
но это мое субективно не разобравшееся до конца мнение


ЮЮ   (2004-07-07 11:42:00) [3]

ADOTable1.FieldByName('S_DATE').AsString = ''
для текущей записи независимо от того, где стоит курсор. Очевидно этот код стоит внутри еще какого-то if


_ALEXey_   (2004-07-07 11:38:00) [4]

А обработку не в OnDraw DataCell надо?


Соловьев   (2004-07-07 10:15:00) [5]


> а мне бы хотелось что бы она покраснела при выводе на экран,
> ну тоесть

приведи код как ты сделал.
и, кстати, очень полезно - http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168


nik   (2004-07-07 10:12:00) [6]

В принцепе получилось, но немного не то что я хотел, она выделяется цветом тогда когда на ней стоит курсор, а мне бы хотелось что бы она покраснела при выводе на экран, ну тоесть когда база открылась необходимые ячейки выделились бы красным цветом
сам текст выгледит так


 if ADOTable1.FieldByName('S_DATE').AsString = '' then
    DBGrid1.Canvas.Font.Color := clred;

это в OnDrawColumnCell объекта DbGrid


Explorer   (2004-06-30 14:02:00) [7]

>Алхимик ©
ну тогда светомузыка получится :)


Алхимик   (2004-06-30 13:38:00) [8]

А если в ячейке слово "серо-буро-малиновый"?


Explorer   (2004-06-30 10:16:00) [9]

обрабатывай onDrawColumnCell  сетки.
примерно так:
if(QueryActiveDogovors.FieldByName('OnDatePaid').AsDateTime)=date() then begin
         DBGridActiveDogovors.{Columns[0]}Canvas.Font.Color:=clBlue;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо