|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Привет! Вы знаете что при открытии какого-либо окна w_sheet в рамке MDI его Title записывается в меню в пункт Window и помечается галочкой, как активный. Если открыть другой w_sheet, то он также будет помещен в пункт window и пометится галкой, а с неактивного галочка снимется. При закрытии всех окон w_sheet - все Title из пункта меню window исчезнут. Внимание! Вопрос! Где скрипт, который определяет title активируемого листа и помещает его в пункт меню window? Перерыл все. Но ничего не нашел. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 09:04 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
А что происходит, когда пишем: OpenSheet(w_1, w_2, 4 , Layered! )? Наверное именно эта функция OpenSheet и делает всё это. А по закрытию MDI разве нет скрипта, который закрывает все Sheet? Ну хотя бы такого: window activesheet activesheet = This.GetActiveSheet() DO WHILE IsValid(activesheet) Close(activesheet) activesheet = This.GetActiveSheet() LOOP ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 10:10 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Согласен! Возможно добавление Title окна происходит в ф-ии Opensheet и удаление в Close. Но ведь при активации окна ставится галочка! А в каком скрипте или ф-ии она ставится? И что будет, если в меню не будет пункта m_window. Может в виртуальной машине Билдера уже зашито управление этими галочками и добавлением/удалением Title для пункта меню m_window? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 10:25 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Andry_KМожет в виртуальной машине Билдера уже зашито управление этими галочками и добавлением/удалением Title для пункта меню m_window? Нет. См. Help по OpenSheet. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 11:15 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
IMHO, билдер здесть вообще не у дел - это стандартная функциональность MDI. За подробностями - в MSDN. "Отсебятина" билдера в работе с MDI - только стиль Layered!. Опять же - IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 11:17 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
А, собственно, зачем это надо знать где у кого что в каком скрипте зарыто? Спортивный интерес? Или личные корыстные цели? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 11:25 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Просто была задача поставлена, управлять этими названиями. Например: Открываются несколько экземпляров одного окна с разной функциональностью, отличающейся незначительно. Ну соответственно и назвать эти окна надо по разному в пункте меню m_window. Городить новые окна - увеличение трудозатрат. В общем я пришёл к тому же мнению, что вы и написали. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 11:35 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
В любом скрипте меняешь title, автоматом меняется текст в меню. А если приперло из внешнего скрипта, можно поизвращаться так: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 17:05 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Может и не в тему ... А можно ли заделать так, что бы один из открываемых sheet-ов не появлялся в этом меню ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 19:03 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
2PaulJB Штатными средствами PB, IMHO - никак. AFAIK, без трюков и средствами Win32 - никак. MSDNWhenever a child window is created, the system automatically appends a new menu item to the window menu. The text of the menu item is the same as the text on the menu bar of the new child window. By clicking the menu item, the user can activate the corresponding child window. When a child window is destroyed, the system automatically removes the corresponding menu item from the window menu. С интересом послушаю тех, кто это делал. С неменьшим интересом узнаю - зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2003, 21:17 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
PaulJBА можно ли заделать так, что бы один из открываемых sheet-ов не появлялся в этом меню ? Недавно Филипп отвечал на такой вопрос: надо сделать Enabled = False для sheet ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2003, 12:21 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Whenever a child window is created, the system automatically appends a new menu item to the window menu ... from the window menu. Вот такого ответа я ждал. Спасибо огромное! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2003, 13:41 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
2 Anatoly Moskovsky Всё, как вы говорили. Но как только я включаю enabled, пусть даже после открытия, пункты добавляются в меню. Без enabled окно неработоспособно. Вы сами пользовались этим апроарчем или "за что купил..."? Если пользовались, то расскажите подробнее.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2003, 14:03 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Дык вопрос был как спрятать, а про то, что его и использовать при этом надо, речи не было :)) Я сам не пользовался - ни разу не приходило в голову так делать. Встречный вопрос - а зачем все это? Ведь пользователь ожидает от MDI другого поведения (того что в MSDN описано), и будет попросту путаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2003, 15:48 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
2 Anatoly Moskovsky Сам я MDI-окна от меню не прячу, не дошел ишшо до такой мудрости... :-)) Но предложенный вами способ меня заинтересовал и попытался прикинуть, как это будет работать. Почему не добавляет в меню при enabled = false мне, IMHO, понятно - видимо "сказать" MDI client'у "добавить пункт в меню, включить в список окрытых MDI-окон" должна функция окна MDI child, а управление ей не передаётся... Что-то типа этого... Я думал, вы мне объясните как заставить MDI child после этого нормально работать и чем это может быть полезно... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2003, 17:05 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
>> Встречный вопрос - а зачем все это? Ведь пользователь ожидает от MDI >> другого поведения (того что в MSDN описано), и будет попросту путаться. Отвечу. Только ногами не бить плз. :)) Создается приложение в стиле MDI. В процессе создания выясняется, что лучше переделать его под стиль а-ля OutLook. Переделал. Все гуд, но единственное что мне не понравилось - это меню. Да и у MDIFrameWindow есть пару полезных ф-ций присущих только ему. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2003, 12:23 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
2PaulJB Как нас учил великий Филипп, можно пристрелить MDI client и наслаждаться остальными удобствами frame - ковбойский такой подход. :-)) Пару раз я видел, как народ назначает MDI меню на первый пункт окна (&Files) и не заморачиваются. Расклад устанавливают "ручками". PS Коллег вообще не бьём, тем более ногами. ;-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2003, 12:40 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Whenever a child window is created, the system automatically appends a new menu item to the window menu А что, нельзя выделить специальный фиктивный пункт меню для того, чтобы в него все эти заголовки открытых окон помещались и его спрятать? Тогда их и видно не будет. Или надо не все прятать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2003, 13:54 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
авторСоздается приложение в стиле MDI. В процессе создания выясняется, что лучше переделать его под стиль а-ля OutLook. Переделал. Все гуд, но единственное что мне не понравилось - это меню. Да зря Вы так. Сдвинте MDIClient Object вправо, а в левой части своего MDI - окна (вне mdi_1), разместите свой объект - панель в стиле outlook. Между панелью и MDIClient object можите установить свой splitbar и таким образом сможите менять ширину панели и клиенской области mdi. В листах, которы будут открываться в клиентской области установите следующие свойства: Код: plaintext 1.
Открывайте листы так Код: plaintext
Тогда Ваши листы будут появляться в mdi окне без titlrbar, занимая всю область mdi_1, но в меню будет всегда виден список открытых листов, и по моему это совершенно замечательно, т.к пользователь сможет переключаться между ними как по <Ctrl>+<tab>, так и через меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2003, 12:10 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
От всей души поздравляю все обчество с наступающим Новым Годом !!! Желаю что-б клиенты вас уважали и хорошо платили за нелегкий наш труд. Здоровья побольше и никакой головной боли !!! 2Ermak Дык так именно и делаем. Точка в точку Хочеться что-бы юзер мог перекючаться между окнами с только с помощью кнопок OutLook-bar. 2Andyn Если я правильно понял - они открывают окно, а затем пункт, который отвечает за это окно прибивают ? Если да, то как на этот пункт выйтить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2003, 14:06 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
2 PaulJB: Если я правильно понял - они открывают окно, а затем пункт, который отвечает за это окно прибивают ? Если да, то как на этот пункт выйтить ? Назначаете какой либо пункт меню в качестве winmenu , все шиты ложаться туда. А потом после открытия главного окна (а может быть и сразу при разработке) этот пункт меню делаете невидимым. Открываете шиты в "развернутом" виде. Ну а переключение между листами - с помощью собственных кнопок собственной панели... ИМХО, самый простой вариант... 2 ALL: Присоединяюсь к поздравлению уважаемого коллеги PaulJB . Хочу пожелать вам всем, чтобы в новом году ваши желания офигели от ваших возможностей ! --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2003, 15:59 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
авторХочеться что-бы юзер мог перекючаться между окнами с только с помощью кнопок OutLook-bar. Это как-то не гуманно по отношению к пользователю - лишить его возможности просмотреть список уже открытых им окон. Может он хочет закрыть 2-3 уже не нужных? А как он это сделает? Где он сможет увидеть какие окна уже открыты? То, что пользователь кроме стандартных способов переключения между открытыми окнами получает ещё и возможность выбора через нажатие кнопок на outlook-bar'e - это здорово, но зачем обрезать остальные способы? 2All Присоединяюсь к пожеланиям PaulJB и Ikar. Хочу пожелать всем в новом 2004 году - по настоящему больших творческих удач! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 08:41 |
|
MDI и w_sheet
|
|||
---|---|---|---|
#18+
Присоединяюсь к мнению Ermak - если не будет принудительного закрытия окон при переключении между режимами, т.е. окна будут оставаться в фоновом режиме, то пользователь должен их видеть и переключаться между ними не только через панельку слева, иначе действительно догадаться будет просто не возможно, что окно уже открыто. Насколько я понимаю переключение между окнами самим пользователем, минуя панель режимов, чревато тем, что сама панель может оказаться не синхронизированной с текущим активным окном. Для этой цели можно в событиях главного окна перехватывать переключение между дочерними MDI окнами и синхронизировать панель. All Поздравляю всех с наступающим Новым Годом. Желаю всем в Новом году здоровья и благополучия в семье, граммотных работодателей, достойных зарплат и профессионального роста. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 09:03 |
|
|
start [/forum/topic.php?fid=15&fpage=111&tid=1339359]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 232ms |
total: | 376ms |
0 / 0 |