Форум: "KOL";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизШирина выводимой меню, при OwnerDraw=true Найти похожие ветки
← →
mehos (2004-04-03 21:33) [0]Возник вот вопрос. Есть у меня менюшка, для которой для каждого элемента стоит OwnerDraw и соответственно свой обработчик для OnDrawItem. Так вот при таких условиях менюшка получается шириной пикселей в 10 и соотвественно ни одного пункта не видно. Лечится добавлением левого пункта в меню с названием подлиннее, у которого OwnerDraw = false, но это всё полумера. Копал в сторону OnMeasureItem, но в отличии от VCL компонента, он ширину не возвращает. Подскажите, что делать?
mehos
← →
mehos (2004-04-04 15:49) [1]Нарыл такой код в kol.pas:
if not Assigned( M.OnMeasureItem ) then
Exit;
H := M.OnMeasureItem( M, I );
if HiWord( H ) <> 0 then
MIS.itemWidth := HiWord( H );
Дык OnMeasureItem возвращает двухбайтовый Integer. То бишь
ширину в принципе поменять нельзя, кроме как стандартными
методами Винды. Нафиг тогда вообще OwnerDraw? Баг? Или я чего-то недопонимаю?
mehos
← →
Delphi5.01 © (2004-04-04 16:49) [2]TO: Avtoru KOL
Problema zakluchaetsa v tom chto tehnologia KOL esho novaia, i kolichestov programistov ochen malo, a te kto znaet linitsa otvetit, schitaet takie voprosi lamerskimi :-(( Pochemuta vse shitaut chto programistami rojdautsa :-(((
Zapomnite programistami stanovatsa :-)))
Nado hot dokumentaciu dovat, vse silki na dokumentaciu ne rabotaut, daje fotki na saite KOL.mastak.ru ne otobrajautsa, vidno avtoru ne nujni lishinie specialisti :-((( ...
← →
mehos (2004-04-04 19:08) [3]Да ладно тебе, всё ж на добровольных началах. Но баги править надо, конечно. Я изменил тип выдаваемого значения OnMeasureItem на Dword. И выдаю всё вроде Result=MakeLong(height,width). Пока работает, только надо ещё MCK править.
mehos
← →
Владимир Кладов (2004-04-04 20:00) [4]Ничего там править не надо. Там код:
H := M.OnMeasureItem( M, I );
if HiWord( H ) <> 0 then
MIS.itemWidth := HiWord( H );
if LoWord( H ) <> 0 then
MIS.itemHeight := LoWord( H );
Он уже все делает, и если в старшем слове возвращена ширина, то будет учитываться.
← →
mehos (2004-04-04 21:04) [5]Да, вы были правы, извиняюсь. Забыл, что Integer 4 байта занимает - по учёбе больше под дос программить надо. Однако, всё-таки стоит добавить в хелп что-нибудь вроде
property OnMeasureItem: TOnMeasureItem;
Event handler returns item height in low-order part of value and item width in hi-order one. Property is used for owner-drawn items only. So if OwnerDraw set into false value will be ignored.
А то вот это не слишком понятно.
property OnMeasureItem: TOnMeasureItem;
This event is called for owner-drawn menu items. Event handler must return menu item height.
Всё, вопрос закрыт.
P.S. А за библиотеку спасибо, очень помогает.
mehos
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c