Какая форма в фокусе?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Какая форма в фокусе?

Сообщение sergey-911 » 02.03.2007 (Пт) 7:57

Доброго времени суток уважаемые. Начал писАть прогу. Интерфейс - одна MDI форма, и куча чилдреновских. Для улучшения дизайна нашёл компанент, который (наподобие тулбара) позволяет делать красивые кнопки и менюшки, тоже с картинками. Всё очень качествено, настраиваемо, даже настройки пользователя можно сохранить в отдельный файл. Вид, как у MS Word.
Теперь собственно вопрос. Разработчики не стали заморачиваться об MDI интерфейсе. Всвяза с этим возникает нехорошая особенность. При открытии MDI формы и чилдреновской, КАЖДАЯ из них имеет, как меню, так и кнопки. Не говорю уже про то, что нет возможности выводить список открытых окон (window list).
Решил сделать одну такую менюшку с кнопочками, и в зависимости от того, какая чилдреновская форма в фокусе, формирую програмно интерфейс на VDI форме.
Уважаемые, какие события ПРАВИЛЬНО использовать, чтобы та узнать, какая из формы на данный момент выбрана пользователем?
Пишу клас, формирующий данный интерфейс. В каких случаяз его будет необходимо запускать, кроме:
Form_Initialize
Form_Activate
Form_GotFocus
Form_LostFocus
?
Ошибок здесь быть не должно, т.к. приложение клиент-серверное с разграничением прав доступа, и те данные, которые доступны одному юзеру, не в коем случае не должны попасть другому!
Спасибо.
С уважением, Сергей.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.03.2007 (Пт) 8:51

а ActiveForm не рулит?

Form_Initialize - при инициализации формы. Один раз!!!
Form_Activate - при активизации формы, в принципе при получении фокуса
Form_GotFocus - аналогично предыдущему (но какие-то нюансы есть, не может не быть)
Form_LostFocus - при потере фокуса.

Я бы на твоем месте потестил порядок и моменты возникновения этих событий на простеньком проекте.
Весь мир матрица, а мы в нем потоки байтов!

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 02.03.2007 (Пт) 9:35

Form_Initialize - при инициализации формы. Один раз!!!
Form_Activate - при активизации формы, в принципе при получении фокуса
Form_GotFocus - аналогично предыдущему (но какие-то нюансы есть, не может не быть)
Form_LostFocus - при потере фокуса.

Спасибо тебе !Viper!, конечно. Но я и так имею представление об этих 4-х событиях...
Мне необходимо знать, КАКИЕ события нужно использовать ЕЩЁ, или ВМЕСТО них, чтобы эзер, беспорядочно кликая в панике по менюхам и формам проги, после угара, случайно не получил бы тот интерфейс, и тем более ДОСТУП, к тому, к чему ему не положено. Я, сначала хотел все настройки этих "Баров", сохранить в отдельных фаилах (для каждой формы), давая пользователю возможность менять под себя данный интерфейс и сохранять настройки. Но, думаю, что от этой идеи придётся отказаться, т.к., гипотетически, есть вероятность скопировать данный файл с настройками, переименовать его, и сделать какую-либо пакость... Да и подгрузка менюх из файлов настроек и их сохранение, требует немного времени от пользователя...
Я бы на твоем месте потестил порядок и моменты возникновения этих событий на простеньком проекте.

Дельный совет. Я так и сделал с самого начала, но этот "Пробник" выкладывать здесь не стал, т.к. нужно выкладывать и сам компанент...
С уважением, Сергей.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.03.2007 (Пт) 9:36

!Viper! писал(а):(но какие-то нюансы есть, не может не быть)

Нюансы удобнее всего наблюдать в MDI-Child формах.
Lasciate ogni speranza, voi ch'entrate.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 02.03.2007 (Пт) 19:59

Активная child-форма заменяет родительское меню своим.
Если не лень, можно влезть в сообщения MDI-MainForm (WM_USER+ 3158) или MDIClient (WM_MDISETMENU), блокировать их и написать собственную подмену меню.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 05.03.2007 (Пн) 0:44

Активная child-форма заменяет родительское меню своим.

Не EUGY. В том-то всё и дело. Я использовал "SSActiveToolBars" компанент, у которого такой возможности не предусмотрено, как впрочем нет и возможности выводить список открытых окон программы.
Зато есть возможность пользователю настраивать меню и кнопки по своему вкусу и запоминать настройки в файл.
В общем, я разобрался, чё к чему. Единственно, не пойму, почему при закрытии всех чилдреновских окон, у MDI формы не срабатывает событие "Activate"?
С уважением, Сергей.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 100

    TopList