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

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

Menu.DefaultItem - невозможно снять [Delphi, Windows]


Vladimyr ©   (2004-07-12 12:33:00) 

Привет всем, пробовал ли кто-нибудь использовать у меню свойство DefaultItem?
Дело в том, что, изменяя его в runtime, я с удивлением обнаружил, что могу установить его для любого элемента меню, но не могу снять!
Присваивание PopupMenu1.Items[n].DefaultItem := falseне даёт абсолютно никакого эффекта!
В отчаянии я даже пытался оттрассировать функцию SetState, и обнаружил, что она работает совершенно нормально, соответствующий бит у fStateсбрасывается.
(то есть если fState был 4104, то стал 8, и т.п.)


z007   (2004-07-19 20:11:00) [1]

В точку.


Vladimir Kladov   (2004-07-18 11:44:00) [2]

Конечно не будет. Поэтому я решил просто добавить комментарий к свойству DefaultItem:

|<br>If you change DefaultItem at run-time and whant
      to provide changing its visual state, recreate the item first resetting
      Visible property, then setting it again.


z007   (2004-07-18 11:38:00) [3]


> После изменения defaultitem воткнуть:

Зачем?
Будет ли это "в духе kol"?


Vladimyr   (2004-07-15 03:28:00) [4]

После изменения defaultitem воткнуть:
Visible := false;
Visible := true;

ВСЁ! :)

А для пользователя удобно, когда отмеченный радио-итем тут же   жирнеет...


Vladimir Kladov   (2004-07-14 16:27:00) [5]

Какой код? Ладно, я сам посмотрю. Мне никогда не приходило в голову в run-time менять Default. Не думаю, что это - способ облегчить работу пользователя с интерфейсом. Интерфейс должен работать на уровне мышечно-моторных функций. А если сейчас default - это одно, через секунду - другое, то это как-то не очень.


Vladimyr   (2004-07-14 03:05:00) [6]

Да, помогло... Как всё просто! Жаль, этого кода нет в KOL.pas...
Спасибо огромное.


z007   (2004-07-13 23:47:00) [7]

Надо принудительно заставить перерисовать и пересчитать нужный пунтк меню. При изменении сделать Visible:= False, Затем - True .
Все.
(Если не известен нужный пункт... ищите или перебирайте все)


Vladimyr   (2004-07-13 00:47:00) [8]

Попробовал - безрезультатно.
Да и не логично использовать процедуру Redraw FormMenuBarдля обыкновенного PopupMenu.
И кстати, жирнеютпункты меню нормально, безо всякого обновления...


Vladimir Kladov   (2004-07-12 15:21:00) [9]

наверное, надо обновить menu bar.


Наверх

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