Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Выделение цветом ячейки в DBGrid   Найти похожие ветки 

 
nik ©   (2004-06-30 10:09) [0]

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


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

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


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

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


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

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


 
nik ©   (2004-07-07 10:12) [4]

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


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

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


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


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

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


 
_ALEXey_   (2004-07-07 11:38) [6]

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


 
ЮЮ ©   (2004-07-07 11:42) [7]

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


 
nik ©   (2004-07-12 13:39) [8]

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-13 03:33) [9]

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
1-1090494788
~ShamaN~
2004-07-22 15:13
2004.08.08
Quick Report


14-1090133295
DelphiNew
2004-07-18 10:48
2004.08.08
День программиста


3-1089461301
JIurafdsfsdt
2004-07-10 16:08
2004.08.08
Проблема с примером из книги


4-1088319931
djone
2004-06-27 11:05
2004.08.08
Parent


14-1090303416
Внук
2004-07-20 10:03
2004.08.08
Нет слов