Главная страница
    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.47 MB
Время: 0.036 c
1-1090862637
-= MAX =-
2004-07-26 21:23
2004.08.08
Передать переменную из одного модального окна в другое


3-1089718576
Shama_n
2004-07-13 15:36
2004.08.08
Как на SQL записать текстовую строку в BLOB поле?


3-1089556861
Piter
2004-07-11 18:41
2004.08.08
INSERT/UPDATE в одном флаконе


1-1090534167
Victor!
2004-07-23 02:09
2004.08.08
TXMLDocument не понимает по русски


3-1089660270
softmaster
2004-07-12 23:24
2004.08.08
И снова по ФастРепорт вопросик...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский