Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Есть некая форма. С этой формы неким действием открывается другая форма причем модально. Проблема в том что при этом в первой форме не срабатывает триггер OnDeactivate!! А очень нужно чтоб сработал! (При открытии второй формы не модально - OnDeactivate работает) Как бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 12:59 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Все дело в том, что открытии модальной формы = открытие например MessageBox. И пока тот кто вызывал модальную форму не получит mrResult не сработает OnDeactivate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:12 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
А можно ли как нибудь ( в общем случае ) из формы которая открылась модально добраться до формы которая вызвало это модальное окно ( имеется в виду вот что в моем проекте все формы созданы на основе одной - шаблонной ) и в шаблонной форме обрабатываются события ( OnActivate и OnDeactivate) таким образом если открыть какую то форму модально и на этой форме добраться до вызвавшей ее формы ( не зная в design-time что это будет за форма) то можно наверно ручками вызвать это событие OnDeactivate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:19 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Проблем с доступом из модальной формы в вызвавшую ее форму (равно как и в любую другую) нет. Когда явно вызываешь - все нормально. Можно вообще обойтись без модальных окон: Form1.Enable := False/True ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:32 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Можно сделать все. В твоем случае я использовал бы механизм сообщений. Т.е. при открытии модальной формы передавал бы нэндл предка (того, который открыл). Дальше все просто, из модальной формы шлеш сообщение, а в предке обрабатываеш. Есть вариант с COM, но он сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:36 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Вопрос был в том как определить какая форма вызвала эту модальную форму если заранее не знаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:37 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
LG: У меня в проекте туева кучя форм из некоторых форм так же туева куча может открываться модально и мне что каждый раз при вызове передавать хэндл? Более универсального способа нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:40 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Не как ответ, а как направление поиска решения (одно из возможных): при закрутии модальной формы фокус получает вызвавшая форма. Может посмотреть куда должен вернуться фокус ввода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:46 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
eNose: Интересно и как это сделать в общем случае? Вообще то я полагал что события OnActivate и OnDeactivate соответствуют событиям прихода/ухода фокуса на данную форму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 13:53 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
При модальном вызове OnDeactivate не работает... Я сам не пробовал, но у Application должен где-то храниться порядок вызова форм. Или посмотри Parent у модальной формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 14:03 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
>>Вопрос был в том как определить какая форма вызвала эту модальную форму если заранее не знаешь? Исходя из вопроса: 1. Получаем HWND GetTopWindow(HWND hWnd // handle of parent window); 2. Получаем HWND GetNextWindow( HWND hWnd, // handle of current window UINT wCmd // direction flag ); 3. Имеем нэндл нужного окна. Дальше делаем, что хотим ... Но я бы пересмотрел логику работы с >>туева кучя форм из некоторых форм так же туева куча может открываться модально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 15:08 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
eNoise: >> Application должен где-то храниться порядок вызова форм. Не нашел я там такого >>Или посмотри Parent у модальной формы. Parent =nil ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 15:08 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
GetWindow(Handle, GW_HWNDNEXT) дает HWND вызвавшей формы. (здесь Handle - ModalForm.Handle) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:01 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Можно и так ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:11 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
А вот и неправда! При обычном вызове формы (show ) тут вы правы А при showmodal обнаружил странную штуку - хендл модального окна - тот же что и хендл вызвавшего его окна!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:20 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Этого не может быть. Проверь еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:21 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Прошу прощения...поторопился с выводами при еще одной попытке протестировать получились совсем другие значения т.е. При обычном вызове формы (show ) всё работает А при showmodal хендл вызвавшего его окна и хендл, возвращаемый GetWindow(Handle, GW_HWNDNEXT) не одинаковы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:23 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Как выяснилось при showmodal GetWindow(Handle, GW_HWNDNEXT) выдает хэндл главной (MDI) формы!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 16:28 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
М-да, грустно. Если у тебя все формы наследуются от одной, есть еще вариант :)) ... TXXX = class(TForm) private FParentHandle: THandle; ... public ... property GetParentHandle: THandle read FParentHandle; procedure ShowModal(AParentHandle: THandle); reintroduce; ... end; ... procedure TXXX.ShowModal(AParentHandle: THandle); begin FHandle := AParentHandle; inherited ShowModal; end; ... Тут в предке имеем хендл того, кто вызвал. Соответственно во ВСЕХ !!! вызовах ShowModal надо поменять на ShowModal(self.Handle) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 17:09 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
А как быть не смоими окнами ( например стандартное окно диалога отарытия файла)??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 17:18 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Чего-то понаворотили, блин. Все просто: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2003, 19:08 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
Tygra, я сейчас пришел на работу, как раз ночью до меня дошло тоже самое, что ты написал. Просто я никогда не догадаюсь закинуть 500 форм в автокриэйт... Поэтому я и отвечал "со своей колокольни" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 07:57 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
А при чем тут autocreate? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 10:40 |
|
||
|
Проблема с OnDeactivate !!!!
|
|||
|---|---|---|---|
|
#18+
>> А как быть не смоими окнами ( например стандартное окно диалога отарытия файла)??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 10:45 |
|
||
|
|

start [/forum/search_topic.php?author=maxidrom&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 654ms |
| total: | 799ms |

| 0 / 0 |
