Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

Странности с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
4-1189112766
Rubi
2007-09-07 01:06
2008.05.18
Отправка 1 байта через com-порт


2-1208526143
lewka-serdceed
2008-04-18 17:42
2008.05.18
Порядок форм


15-1207032765
Bober_crazy
2008-04-01 10:52
2008.05.18
1 апреля или правда?


3-1192637656
Lamer666
2007-10-17 20:14
2008.05.18
Delphi + MS SQL разграничение прав доступа в базе


2-1208240580
francuz_diletant
2008-04-15 10:23
2008.05.18
Перехват клавиши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский