Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

Странности с ShowModal   Найти похожие ветки 

 
Real ©   (2008-03-13 19:19) [0]

Ситуация примерно такая: главная форма (f1) со списком элементов, по клику вызывается редактор элемента (f2.showmodal) при внесении изменений и нажатию на "сохранить" нужно: скрыть f1 и f2 и отобразить форму (f3), на которой отображается индикатор сохранения (процесс минимум на минуту, редактируются данные на FTP). И вот что происходит: если я с формы f2 отображаю f3 с помощью showmodal, то вызовы f1.hide и f2.hide не срабатывают, а исчезают формы уже после того как закончится процесс редактирования. Repaint форм помогает, но не для f1 :) Вообщем вопрос такой: насколько вообще корректно скрывать формы (hide) из которых был сделан вызов showmodal другой формы? И как вообще лучше организовать такой процесс отображения нескольких окон с showmodal? В принципе, не обязательно f3.showmodal - если удасться скрыть f1 и f2 то можно сделать и f3.show. Понимаю что в чем то я туплю, но не знаю точно где копать :)


 
boa_kaa ©   (2008-03-13 19:46) [1]

здесь нет ничего странного
нужно в f1 обработать возвращаемое значение от f2, из нее же спрятать себя и показать f3


 
den303 ©   (2008-03-14 00:01) [2]

ИМХО, имеет смысл закрыть f2, после спрятать f1 и показывать f3. Либо юзать Show для f2 вместо ShowModal.

Просто первая форма не активна, пока не отработает вторая форма - ибо ShowModal


 
Real work   (2008-03-14 13:53) [3]


> ИМХО, имеет смысл закрыть f2, после спрятать f1

ИМенно так и делаю, но f2.close не дает результатов: форма остается видна. Попробую сегодня повторить этот эффект в тестовом приложении и заброшу исходник


 
clickmaker ©   (2008-03-14 14:02) [4]

...
f2 := TForm2.Create;
try
 Res := f2.ShowModal;
finally
 f2.Free;
end;
if (Res = mrOk) then
begin
 f1.Hide;
 f3.Show;
end;

?


 
Real ©   (2008-04-03 02:42) [5]


> clickmaker ©  

Все так и работает, и в том числе без проверки ModalResult. Сделал тестовый проект. Понял в чем загвоздка: форма не скрывается, если после вызова скрытия есть еще действия (а у меня именно так) Вообщем это вполне логично :) У меня сейчас так: код обеспечивающий редактирование, выполняется в обработчике кнопки, который закрывает f2 (то есть, я скрываю модальную форму редактора и начинаю выполнять код редактирования в этом же обработчике, пытаясь отобразить ход выполнения на f3. И конечно хотелось бы чтоб при этом, на экране на время операции редактирования было видно только f3, а после окончания - закрыть f3 и отобразить f1). То есть как я понял, пока процедура-обработчик закрытия окна не завершится полностью, закрытие не сработает? Никогда об этом не думал, по простой причине - впервые с таким сталкиваюсь.

Тогда подскажите где именно выполнять само редактирование, ход которого нужно отобразить на f3 (остальные до конца операции скрыты). Можно конечно привязаться к событию OnShow формы f3, но это уж совсем как то ужасно мне кажется.

Чтоб было понятнее о чем речь, по ссылке ниже - тестовый пример с тремя формами. В кнопке Save второй формы - выполняется псевдо-редактирование на пару секунд: в это время можно наблюдать что f2 не закрывается пока идет "редактирование". Если закоментировать операцию - то тогда все отрабатывается корректно.

http://www.azlab.org/download/showm.rar


 
Real ©   (2008-04-03 02:46) [6]

Ну вот пока писал понял что после получения ModalResult и надо запустить редактирование, попутно отобразив f3 :) Но все же интересно узнать, никак нельзя выполнить код в самом обработчике?


 
Real ©   (2008-04-03 03:09) [7]

Все, разобрался окончательно, ветку можно удалить или просто забить на нее :)

P.S. Не первый раз замечаю, что как только запостишь какую-нить проблему на делфимастер, решение приходит само в течении следующих десяти минут :) Прям мистика какая-то


 
den303 ©   (2008-04-03 10:04) [8]


> Real ©   (03.04.08 03:09) [7]
> как только
> запостишь какую-нить проблему на делфимастер, решение приходит
> само в течении следующих десяти минут :)


Это верно! :o)



Страницы: 1 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1207403489
TIF
2008-04-05 17:51
2008.05.18
Подскажите, а то фантазия даёт сбой :-(


2-1208524530
Oyeme
2008-04-18 17:15
2008.05.18
Ант и POS или ...то чего нету


2-1208388475
deras
2008-04-17 03:27
2008.05.18
SQL - запрос


2-1208127399
HF-Trade
2008-04-14 02:56
2008.05.18
Размер файла в сети


2-1208704632
No_Dead
2008-04-20 19:17
2008.05.18
Банальная оптимизация(или около этого)