Вниз
Скачать: CL | DM;

Поле для статуса записи   Найти похожие ветки 

← →
Slym ©   (2006-10-18 05:22) [40]

Хреново скопипастил... писалось под TDBGridEh но для TDBGrid заменить TDBGridEh на TDBGrid


← →
MsGuns ©   (2006-10-18 10:15) [41]

>Игорь ЖАКО   (17.10.06 16:14) [30]
>ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ADOQuery1.FieldByName ( "status").AsInteger)  ;
>тоже самое, рисует в каждом поле

Перед прорисовкой надо выполнить проверку ячейки, для которой выполняется перерисовка:

If Column.FieldName=имя поля, вместо содержимого которого рисуется картинка

>что-то я тут не понял про OnGetText
> Adoquery1.FieldByName("status").OnGetText :="";  
>выдает ошибку

В событии филда ;)
Двойной клик на компоненте TADOQuery, в появившемся редакторе полей датасета найти то поле, которое отображается в колонке, где надо рисовать иконку. В окне инспектора объектов на закладке "События" (Events) встать курсором на OnGetText и дважды щелкнуть. Затем в том месте, где окажется курсор, набрать между Begin и end

  Text := "";


← →
Игорь ЖАКО   (2006-10-18 12:29) [42]

>MsGuns
C OnGetText разобрался
вот что-то с проверкой ячейки не разберусь

  begin
if ADOQuery1.FieldByName("status").AsInteger=1 Then
 If  Column.FieldName="status" then
   ImageIndex:=1;
       ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ADOQuery1.FieldByName( "status").AsInteger)  ;
end;


← →
MsGuns ©   (2006-10-18 12:49) [43]

>Игорь ЖАКО   (18.10.06 12:29) [42]
>MsGuns
 begin
if ADOQuery1.FieldByName("status").AsInteger=1 Then  
If  Column.FieldName="status" then
  ImageIndex:=1;  
    ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ADOQuery1.FieldByName(  "status").AsInteger)  ;
end;

Наклонным выделено лишнее


← →
Игорь ЖАКО   (2006-10-18 14:02) [44]

Все равно ерунда получаеться все поля DBgrida прорисовываються
не только колонка status


procedure TFmain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
 Var ImageIndex   : Integer;
If  Column.FieldName="status" then
   ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ADOQuery1.FieldByName(   "status").AsInteger)  ;



← →
MsGuns ©   (2006-10-18 14:11) [45]

Зачем Вам переменная ItemIndex, если индекс картинки Вы вытаскиваете непосредственно из поля записи датасета ?

Приведите полный текст обработчика, а не только "рисующий" кусок.


← →
ANB ©   (2006-10-18 14:55) [46]


> If  Column.FieldName="status" then

судя по вот этому коду вообще отрисовки быть не должно, т.к. поле в колонке обычно в верхнем регистре хранится.
Вывод : исходник приведен не из программы. Или не тот кусок исходника.


← →
Игорь ЖАКО   (2006-10-18 16:29) [47]

Вот рабочий код, не знаю правельно или нет зато работает

procedure TFmain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);

 Var ImageIndex   : Integer;
  begin
      if Column.FieldName = "Status" then
if ADOQuery1.FieldByName("status").AsInteger=0 Then
 ImageIndex:=0;
  ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top, ImageIndex);
   if Column.FieldName = "Status" then
if ADOQuery1.FieldByName("status").AsInteger=1 Then
 ImageIndex:=1;
  ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top, ImageIndex);
    if Column.FieldName = "Status" then
if ADOQuery1.FieldByName("status").AsInteger=2 then
ImageIndex:=2;
ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ImageIndex)
end;


Вся соль была в ADOQuery1.FieldByName(   "status").AsInteger


← →
Slym ©   (2006-10-19 05:00) [48]

Какие у нас классные программисты:
if ADOQuery1.FieldByName("status").AsInteger=0 Then
ImageIndex:=0;

вот так надо:

procedure TFmain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var ImageIndex:integer;
begin
 if Column.FieldName="Status" then
 begin
   TDBGrid(Sender).Canvas.FillRect(Rect);
   ImageIndex:=Column.Field.AsInteger;
   if (ImageIndex<ImageList1.Count) and (ImageIndex>=0) then
     ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,ImageIndex);
end else
  TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;



← →
Игорь ЖАКО   (2006-10-19 09:54) [49]

Огромное Спасиба всем особенно MsGuns



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

Скачать: CL | DM;



Память: 0.54 MB
Время: 0.03 c
6-1155111662
Kiloper
2006-08-09 12:21
2006.12.31
как с помощью компонента IdHTTP передать PHP скрипту файл?


15-1165515166
Cyrax
2006-12-07 21:12
2006.12.31
Пара вопросов по ADSP-21xx


4-1156161031
apic
2006-08-21 15:50
2006.12.31
ntfs-потоки


9-1140680025
Fenix
2006-02-23 10:33
2006.12.31
Модели людей для дальнейшей их анимации.


11-1142941853
glesik
2006-03-21 14:50
2006.12.31
Звук при нажатии Enter или Esc




   Наверх