![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
В MDI приложении требуется отловить нажатие оконной кнопки 'Close' (окно MdiChild) и произвести какие-нибудь действия?
Спасибо. |
|||
|
||||
Serhio |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.6.2002 Репутация: нет Всего: нет |
Hi !
MDIChild как и любое другое окно имеет событие FormClose, Его и надо обработать. Удачи. (пример выслал на мыло) |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Обрабатывай OnCloseQuery
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
Спасибо, спасибо. Но я вообще-то "не первый год за мужем"
![]() OnClose и OnCloseQuery я проходил. У меня такая проблема: Дочернее окно может быть закрыто и другими способами (извне как бы). И вот на разные случаи должно происходить что-то разное, в том числе и в случае, когда я закрываю форму непосредственно через значок "закрыть". Проще говоря, есть на главной форме кнопка Button1 OnClick которой, ну скажем MDIChildForm.Close; Нажал я на кнопку и закрыл доч.форму (Action:=caFree) и получил сообщение 'Окно закрыто по кнопке Button1', а если я нажал значок на форме (ее оконную кнопку "закрыть"), то получил сообщение 'Окно закрыто системно' В общем в этом духе. |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Единственно, что приходит в голову, это либо следить за мышкой, и тогда легко узнать, что узер нажал на крестик, либо когда у тебя окно закрывается как-то по другому присылать свои сообщения и их обрабатывать.
-------------------- Волны гасят ветер... |
|||
|
||||
Free |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 4.6.2002 Где: Приморский край Репутация: нет Всего: нет |
Может, я чего-то недопонял, но при нажатии Button1 - OnClose а при нажатии "кнопки с крестиком" - OnCloseQuery. Почему бы не написать:
|
|||
|
||||
МММ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 18.6.2002 Репутация: нет Всего: 1 |
Free ТАК НЕ ПОЙДЕТ!!!!! можешь сделать так или глобальную переменную, или через свойство form.tag первоначально она равна 0
Вроде должно работать ![]() |
||||
|
|||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
Вот решение касается не только MDI-формы
type TForm1=class(TForm) ......... protected procedure WMSYSMESSAGE(var MSG:TMessage); message WM_SYSCOMMAND; ......... procedure TChannelForm.WMSYSMESSAGE(var MSG:TMessage); begin if MSG.WParam=SC_CLOSE then ShowMessage('системная кнопка'); else inherited; end; отреагирует только тогда, когда будет нажата системная кнопка 'close'; |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
WM_SYSCOMMAND, очевидно
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Alex101 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: 2 Всего: 10 |
WM_SYSCOMMAND отловит только ежели закрывать руками окно,
лучше WM_DESTROY использовать, тогда везде отловишь Дааа... надо с самого начала вопрос читать ![]() Админ, пожалуй удали это - ответ не по существу... -------------------- С уважением, А. Фролов. |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Отлов WM_SYSCOMMAND предполагает отлов SC_CLOSE в качестве WParam, соответсвенно это событие возникает при любом закрытии будь то клавиатурой, будь то мышью или ещё как-то кроме как аварийном завершении соответсвующего процесса.
Если Вы точно не знаете, не надо вводить людей в неправильную инфу и создавать подземный стук. -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |