![]() |
Win32 API | Смена жирности строки в Listbox'e
Как можно реализовать смену жирности шрифта у одной или нескольких строк Listbox'a (WM_SETFONT меняет у всех сразу) ? Прочел весь SDK по Listbox'ам и ответа не нашел :(
|
Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; |
Prisoner
спасибо, реализовал =) Правда было довольно много мучений, распишу их, чтобы другие не мучались :) 1. В design-time надо ListBox'y установить опции loOwnerDrawFixed либо loOwnerDrawVariable (кстати, в чем разница?), иначе данная процедура по-видимому игнорируется. 2. Для программирующих не с помощью VCL, а с помощью KOL Код:
function TForm1.ListBox1DrawItem(Sender: PObj; DC: HDC; const Rect: TRect; Кстати 2 проблемы еще остались. Надо выделенный элемент писать на синем фоне (ну как обычно). Для этого я ввёл обрабочик Код:
if odsSelected in ItemState then ... Пока писал эти строки, допёрло как сделать ;) в самое начало надо добавить вызов SetBkMode, т.е. Код:
.... Код:
.... В итоге выяснилось, что это происходит, когда используется больше 1 вызова свойства Font.Color . Причем даже если делать так: Код:
.... |
Как я и думал, проблема будет решена с помощью Winapi (опять глюки у программистов KOL???).
Итоговый код: Код:
var Аналогичный код на VCL выглядит так: Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; |
Время: 16:05. |
Время: 16:05.
© OSzone.net 2001-