Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGridEh.OnDrawColumnCell не работает отрисовка при потере фокуса


Страницы:   1 2

DelphiLexx ©   (2006-11-17 14:36:00) 

В ячейках первой таблицы у меня отображается маленькая пиктограмма и текст.

procedure
 DBGridDrawCellPicture(Sender: TObject; img: TImageList; AText: string;
   State: TGridDrawState; AFontColor: TColor; IconNum: integer;
   ARect: TRect; AFontStyle: TFontStyles);
var
 bm: TBitmap;
begin

 with TDBGrid(Sender).Canvas do
 begin
   bm := TBitmap.Create;
   bm.Transparent := true;
   try
     if img.GetBitmap(IconNum, bm) then
     begin
       if State = [gdSelected, gdFocused] then
         Font.Color := clWhite
       else
         Font.Color := AFontColor;
       Font.Style := TFontStyles(AFontStyle);
       FillRect(ARect);
       TextOut(ARect.Left + 17, ARect.Top + 1, AText);
       Draw(ARect.Left, ARect.Top, bm);
     end;
   finally
     bm.Free;
   end;
 end;
end;

procedure
 TfmExmplForm.dgrDDBDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin

  DBGridDrawCellPicture(Sender, ImageList.ilSmall,
     fdsDct.FieldByName(GetNamingField).AsString, state, clBlack,  25, Rect, [fsBold])
end;

При потере гридом фокуса картинка не отображается. Как этого избежать?


clickmaker   (2006-11-17 14:53:00) [21]


> Хочешь сказать можно им как-то рисовать на гриде? Тогда
> как?

а за пивком не сбегать?
ты за рулем - ты и тормози. Мне лень. Я тебе слабые места показал, идейку подкинул


DelphiLexx   (2006-11-17 14:51:00) [22]


> кстати, о птичках. У ImageList уже есть метод Draw

И что дальше? Хочешь сказать можно им как-то рисовать на гриде? Тогда как?


DelphiLexx   (2006-11-17 14:51:00) [23]


> подозреваю, что замешаны в этом безобразии  bm.Transparent
> := true; и else  Font.Color := AFontColor;
Мне, кажется, что bm.Transparent и Font.Color здесь не причем. Просто как-то надо заставить грид производить отрисовка даже тогда, когла он теряет фокус.


clickmaker   (2006-11-17 14:50:00) [24]

кстати, о птичках. У ImageList уже есть метод Draw


DelphiLexx   (2006-11-17 14:46:00) [25]


> подозреваю, что замешаны в этом безобразии  bm.Transparent
> := true; и else  Font.Color := AFontColor;

Ну а как надо сделать?


clickmaker   (2006-11-17 14:41:00) [26]

подозреваю, что замешаны в этом безобразии  bm.Transparent := true; и else  Font.Color := AFontColor;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо