Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: 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 вся ветка

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

Наверх




Память: 0.55 MB
Время: 0.035 c
4-1156274077
Dot
2006-08-22 23:14
2006.12.31
поиск hwnd одного из двух окон


2-1166106304
webpauk
2006-12-14 17:25
2006.12.31
Записи


11-1142904743
Dosian
2006-03-21 04:32
2006.12.31
Странное отображение компонентов в KOL.


2-1165692889
FIL-23
2006-12-09 22:34
2006.12.31
QReport


2-1165825556
Алик
2006-12-11 11:25
2006.12.31
Перевод шестнадцатиричных чисел в десятичные