Текущий архив: 2004.08.08;
Скачать: CL | DM;
ВнизРазъясните еще раз про DBGrid (рисунки, Canvas и т.д.) Найти похожие ветки
← →
Artem123 (2004-07-12 15:05) [0]Сразу скажу таблица не локальная использую ClientDataSet
procedure TFrmChild.dbgr_frmchildDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if TDataSource(TDBGrid(Sender).DataSource).DataSet.FieldByName("DNAME").AsString="noname";
then
with TDBGrid(Sender).Canvas do
begin
Brush.Color:=clGrayText;
Font.Color:=clWhite;
FillRect(rect);
TDBGrid(Sender).Columns[0].Font.Color:= clred;
TextOut(Rect.Left, Rect.Top, Column.Field.Text);
ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left, Rect.Top, 0);
end;
end;
Закраска происходит сразу всей строки что и надо но ..
Если в TextOut указать Column.Field.Text что в данном случае то выдает ошибку. Если TextOut(Rect.Left, Rect.Top, ""); то прокатывает но текст не видно. Да и изображение из ImageList рисуется в каждой колонке Грида а мне надо чтоб толко в одной.
Если же такой вариант толку еще меньше
procedure TFrmChild.dbgr_frmchildDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Column.FieldName="DNAME" then
begin
if Column.Field.AsString="noname" then
with TDBGrid(Sender).Canvas do
begin
Brush.Color:=clGrayText;
Font.Color:=clWhite;
FillRect(rect);
TDBGrid(Sender).Columns[0].Font.Color:= clred;
TextOut(Rect.Left, Rect.Top, Column.Field.Text);
ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left, Rect.Top, 0);
end;
end;
В данном случае закрашивается только найденная ячейка и в ней же рисуется изображение а оно мне тут не надо.
Короче каким образом сделать что бы строчка закрашивалась целиком а изображение появлялось в первом Column - этот Сщдгьт не связано не скаким полем.
← →
Соловьев © (2004-07-12 15:09) [1]
> TextOut(Rect.Left, Rect.Top, Column.Field.Text);
> ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left,
> Rect.Top, 0);
поменять местами если хочешь поверх изображения писать
> указать Column.Field.Text что в данном случае то выдает
> ошибку.
какую?
может проверку на Null сделать?
← →
Artem123 (2004-07-12 15:26) [2]ошибка Access violation at adress
null не работает
← →
Соловьев © (2004-07-12 15:29) [3]
> ошибка Access violation at adress
> null не работает
где имеено выдает на какой строке?
как не работает? код!
← →
Курдль © (2004-07-12 15:31) [4]Надо было писать "проверка на IsNull" :)
← →
Соловьев © (2004-07-12 15:32) [5]
> Надо было писать "проверка на IsNull" :)
а головой когда начнут думать? :)
← →
Artem123 (2004-07-12 15:34) [6]begin
if TDataSource(TDBGrid(Sender).DataSource).DataSet.FieldByName("DNAME").AsString="Artem"
then
with TDBGrid(Sender).Canvas do
begin
Brush.Color:=clGrayText;
Font.Color:=clWhite;
FillRect(rect);
TDBGrid(Sender).Columns[0].Font.Color:= clred;
ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left, Rect.Top, 0);
TextOut(Rect.Left, Rect.Top, Column.Field.Text);
end;
end;
ошибка возникает на строке TextOut
Access violation at adress 00494DB9
а как насчет того чтоб картинку только в первой колонке отобразить
← →
Соловьев © (2004-07-12 15:37) [7]
> ошибка возникает на строке TextOut
на ней, т.е. когда туда курсор попадает или когда курсор ее проходит?
← →
Ega23 © (2004-07-12 15:37) [8]TextOut(Rect.Left, Rect.Top, Column.Field.Text);
Column.Field.Text - это к чему относится?
← →
Artem123 (2004-07-12 15:42) [9]Соловьев
ошибка возникает когда ее проходит
← →
Соловьев © (2004-07-12 15:49) [10]
> TextOut(Rect.Left, Rect.Top, Column.Field.Text);
> TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
← →
Artem123 (2004-07-12 15:50) [11]Column.Field.Text это взял из примера на http://delphi.vitpc.com/asp/viewitem.asp?UrlItem=/helloworld/dbgridcolor.htm
← →
Ega23 © (2004-07-12 15:53) [12]Какой Column-то?
Страницы: 1 вся ветка
Текущий архив: 2004.08.08;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.036 c