![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по MDI [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Korona © (2002-06-03 22:42:00)Спрашивал на днях: "Как можно в развернутой MDIChild убрать все кнопки кроме close (как в Word XP)?". Song посоветовал через DeleteMenu.
Пробовал:
SysMenu=GetSystemMenu(Child,Handle,FALSE);
DeleteMenu(SysMenu,SC_MAXIMIZE,MF_BYCOMMAND);
DeleteMenu(SysMenu,SC_MINIMIZE,MF_BYCOMMAND);
- не помогает.
DeleteMenu(SysMenu,SC_CLOSE,MF_BYCOMMAND) затеняет кнопку close,но если форму развернуть, то даже затененная close начинает действовать!
Подскажите какую-нибудь другую функцию или метод. А может быть я неправильные параметры передавал в DeleteMenu?
Song (2002-06-06 10:09:00) [1]Вообще в АПИ есть много чего. Кроме вышеупомянавшегося DeleteMenu() есть RemoveMenu() DeleteItem() но ИМХО если первое не подействовало, то остальные тоже вряди ли.
Если уж совсем невтерпёж, можно вообще заголовок убрать и рисовать на нём хоть чёрта с рогами.
Игорь Шевченко (2002-06-06 09:59:00) [2]Наиболее префессионально приложение выглядит, когда оно соответствует стандартам :-) Привыкли люди, что у MDI-окон 3 кнопки - стало стандартом :-)
Korona (2002-06-05 21:39:00) [3]А может можно как-нибудь скрыть кнопку restore - что то вроде biRestore = false, только через WinAPI? Должен же быть какой то способ.
Я так понимаю отличие обычной формы и MDI состоит в свойстве FormStyle:в MDIChild передается fsMDIChild. Дальше в каком то методе(ах) происходит определение системных кнопок и размещение их на меню родительского окна. Что то типа CreateParametrs. Если эти методы переопределить может что то и получится. Кто-нибудь знает эти методы?
Создавать на панели кнопку закрыть - как то несерьезно. Хотя, может быть кому то известны точные размеры системных кнопок окон - на крайний случай.
Подскажите, пожалуйста. Хочется, чтобы приложение выглядело профессионально.
QWest (2002-06-05 10:18:00) [4]Ну тада есть только один выход (на мой взгляд)- biSystemMenu = false, а на форме создаешь свою кнопу "Закрыть" (как собственно и сделано у меня...)
Игорь Шевченко (2002-06-05 09:50:00) [5]Скорее всего, с MDI этого не получится
Korona (2002-06-04 21:33:00) [6]2Song:
Пробовал и отлавливать WM_SYSCOMMAND. Так можно только запретить действия, но кнопки все равно остаются видимыми. Не сделаешь же в программе так: кнопка minimize есть, а при нажатии на нее ничего не происходит.
2QWest:
А ты попробуй, создай MDI приложение и поставь у MDIChild biMinimize и biMaximize в false - посмотри, что будет. Только WindowState должно быть wsMaximize.
QWest (2002-06-04 09:29:00) [7]Эээ, ребята, я незнаю как там у вас в Delphi6 а у нас, в пятой,у формы есть свойство BorderIcons (раскрывающееся такое), в нем вложенные св-ва... Ставишь biMinimize и biMaximize в false и проблема решена....
Song (2002-06-04 09:05:00) [8]Надо отлавливать тогда WM_SYSCOMMAND и запрещать действие кнопки.