Форум: "Базы";
Текущий архив: 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.53 MB
Время: 0.047 c