Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.042 c
2-1165750746
arturich
2006-12-10 14:39
2006.12.31
TWebBrowser


2-1166020242
dis12345
2006-12-13 17:30
2006.12.31
перебор Label ов


15-1165946715
GanibalLector
2006-12-12 21:05
2006.12.31
Контр.сумма по модулю 2


15-1165315376
IMHO
2006-12-05 13:42
2006.12.31
Лига Чемпионов: решающий день


2-1165869822
AleksEraser
2006-12-11 23:43
2006.12.31
DLL





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