Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.029 c
4-1093505263
SH@RK
2004-08-26 11:27
2004.10.03
Как узнать, что Windows завершает работу ?


14-1095075655
Stany
2004-09-13 15:40
2004.10.03
Чат для аудио/видео/текстовых контактов


8-1089107085
Aplay
2004-07-06 13:44
2004.10.03
Приближение и отдалиние изображении


3-1094187590
TL
2004-09-03 08:59
2004.10.03
Параметры запроса


1-1095692887
hamster
2004-09-20 19:08
2004.10.03
Open/Save Dialog





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский