Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Вниз
ComboBox с иконками (рядом с выбираемыми значениями) Найти похожие ветки
← →
Ago (2002-09-30 15:00) [0]Доброго времени суток! Подскажите как сделать сабж... я знаю, что надо играть на событии OnDrawItem, но мои попытки ни к чему не приводят:
У меня на форме ComboBox и ImageList
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
ImageList1.Draw(ComboBox1.Canvas, Rect.Left, Rect.Top, Index);
end;
Можно какой нибудь пример кода?
← →
MBo (2002-09-30 15:03) [1]пример в хелпе по TListBox.OnDrawItem
← →
Ago (2002-09-30 15:49) [2]Нет примера в хелпе... по крайней мере ни в D5 ни в D4.
← →
MBo (2002-09-30 15:57) [3]в D5 есть.
Подробное руководство по использованию хелпа:
Help-Delphi Help - Указатель
Введите первые буквы...
Послушаемся и наберем ondrawi
в этот момент под OnDrawItem с изумлением видим слово example
Жмем стрелка вниз -Enter
О чудо!
← →
Толик (2002-09-30 16:53) [4]обработчик OnDrawItem для TComboBox. В ComboBox1.Objects[i] лежат HICON, которые и надо рисовать.
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
const
IconWidth: longint = 16;
IconHeight: longint = 16;
var
Top_, Left_: longint;
begin
if(Control is TComboBox)then
with(Control as TComboBox) do begin
with(Items)do begin
Left_ := IconWidth;
Top_ := (ItemHeight - Canvas.TextHeight(Strings[Index])) div 2;
with(Rect)do
Canvas.TextRect(Rect, Left + Left_, Top + Top_, Strings[Index]);
Top_ := (ItemHeight - IconHeight) div 2;
Left_ := 0;
with(Rect)do
Windows.DrawIconEx(Canvas.Handle, Left + Left_, Top + Top_,
HICON(Objects[Index]), 0, 0, 0, Canvas.Brush.Handle, DI_NORMAL);
//end;//with
end;//with
end;//with
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.76 MB
Время: 2.836 c