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

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

Не приходит LB_GETITEMRECT [D7, Win95/98, WinME, NT4, Win2k, WinXP]


_Seldon_ ©   (2005-08-12 22:10:00) 

делаю так:

TMyListBox = class(TListBox)
private
 procedure LBGetItemRect(var Msg:TMessage); message LB_GETITEMRECT;
end;

implementation

procedure TMyListBox.LBGetItemRect(var Msg: TMessage);
begin
 inherited; {!}
 Beep
end;

end.


в {!} управление не приходит ни разу за всё время жизни листбокса. Судя по Spy++ LB_GETITEMRECT вообще не приходит листбоксу. Почему?


Ученик   (2005-08-13 20:54:00) [1]

>_Seldon_   (13.08.05 12:17) [5]

LB_GETITEMRECT, насколько я понимаю, посылает приложение для определения координат элемента списка, а не система для отображения.

CN_DRAWITEM посылается из
procedure TCustomListBox.WMPaint(var Message: TWMPaint);


_Seldon_   (2005-08-13 12:17:00) [2]


>  [4] Ученик   (13.08.05 10:12)
> Borland\Delphi7\Source\Vcl\checklst.pas
>
> procedure TCheckListBox.CNDrawItem(var Message: TWMDrawItem);

спасибо, то что надо.

а почему всё-таки не приходит LB_GETITEMRECT?

и в каких случаях окну посылается CN_DRAWITEM? я так понимаю, что это сообщение Delphi а не Windows? но результат его обработки должен как-то передаваться Windows, ведь она сдвигает элементы в листбоксе....


Ученик   (2005-08-13 10:12:00) [3]

Borland\Delphi7\Source\Vcl\checklst.pas

procedure TCheckListBox.CNDrawItem(var Message: TWMDrawItem);


_Seldon_   (2005-08-13 01:18:00) [4]


>  [1] Piter ©   (12.08.05 22:57)

а что сдесь похожего на форму? :)


>  [2] Ученик   (12.08.05 23:45)

мне надо не высоту изменить, а сдвинуть некоторые элементы вправо...


Ученик   (2005-08-12 23:45:00) [5]

>_Seldon_   (12.08.05 22:10)  
TListBox.OnMeasureItem
Style = lbOwnerDrawVariable


Piter   (2005-08-12 22:57:00) [6]

_Seldon_   (12.08.05 22:10)
procedure LBGetItemRect(var Msg:TMessage); message LB_GETITEMRECT;


что-то я не понял. Сообщение вроде как ListBox'у должно приходить, а ловишь ты его, как будто оно приходит форме.

Ы?


Наверх

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