Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Событие OnDrawItem в ListBox


Автор: EKoshelev 31.1.2005, 13:11
Короче, работал я с OnDrawCell в StringList'e, и он, вроде, всегда вызывается когда перерисовывается какая-л. из ячеек. А вот с OnDrawCell почему-то так не получается. Т.е. это свойство инициализирую, никакого кода в нём не пишу, а список всё равно отображается (хотя, по делу, должно быть пусто). И вообще это событие у меня не вызывается.

Ну, в общем, может кто-нить чё-нить знает?? Помогите мне, плз.

Автор: ~FoX~ 31.1.2005, 13:41
Свойство style поставь в lbOwnerDrawVariable
Если правильно понял смысл вопроса.

Автор: EKoshelev 31.1.2005, 17:29
~FoX~

Сделал как ты сказал и написал такой обработчик
Код

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 ListBox1.Canvas.TextRect(ListBox1.ItemRect(Index), 1, 0, ListBox1.Items[Index]);
end;

Но почему-то когда я врубаю прогу отображается только самый первый элемент списка. Когда тащу ползун вверх - снизу ничего не появляется. А когда вниз - появляется.

Может кто-нибудь подскажет как правильно писать???

Автор: Akella 31.1.2005, 17:32
попробуй сначала добавить
canvas.fillrect(rect);

Автор: EKoshelev 1.2.2005, 08:07
dsergey
А нормально всё, я уже разобрался, после TextRect ещё TextOut добавил. Филл не пробовал, но пробовал нечто-подобное - не работало. Но можно и с филлом поэкскрементировать smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)