![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBGridEh.OnDrawColumnCell не работает отрисовка при потере фокуса
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;