Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.064 c
1-1090272049
кактусбел
2004-07-20 01:20
2004.08.08
как найти все фаилы определенного типа в каталоге


1-1090521455
Fagot
2004-07-22 22:37
2004.08.08
Как запретить показ любых сообщений об ошибках


3-1089748306
Bizon's
2004-07-13 23:51
2004.08.08
Проблемы UDF


4-1088521763
rOOse
2004-06-29 19:09
2004.08.08
Реестр


14-1090216695
BorisMor
2004-07-19 09:58
2004.08.08
Чем C# лучше VB.NET или Delphi 8