Главная страница
    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.53 MB
Время: 0.045 c
10-1124864820
Alisher
2005-08-24 10:27
2006.12.31
Использование DCOM - технологий


15-1165589273
NHEJHGejkwbgk
2006-12-08 17:47
2006.12.31
Письмо без вложений... Это как?


6-1155203525
XbI
2006-08-10 13:52
2006.12.31
сетевые странности


2-1166052594
HF-Trade
2006-12-14 02:29
2006.12.31
Отцентровать изображения в TImage


2-1165697465
arturich
2006-12-09 23:51
2006.12.31
Таймер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский