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

Вниз

Многооконная программаю. Модал - немодал   Найти похожие ветки 

 
Стас   (2007-07-04 11:16) [0]

Ситуация такая: есть главная форма - FormMain, несколько форм, вызываемых из главной в модальном режиме - FormM1, FormM2 и т.д. И есть форма - FormSet, которая может быть вызвана из любой из выше перечисленных форм в немодальном режиме. Т.е., она должна находиться на экране и из любой формы в нее можно войти.

Сначала сделал просто:

procedure TFormMain.Menu_settingsClick(Sender: TObject);
begin
 FormSet.Show;
end;


И аналогично в модальных формах. Но тогда с формой FormSet можно было работать только из того окна, где она была Show. Если закрыть ее из этого окна и открыть из другого, она работала из другого.
Тогда я сделал так: перед обращением к модальному окну закрывал FormSet, а при открытии модального окна вновь его "показывал".

procedure TFormMain.ButM1Click(Sender: TObject);
begin
 ...
 if FormSet.Showing then begin FormSet.Close; FormSet.tag := 1; end
 else FormSet.tag := 0;

 FormM1.ShowModal;
 ...
end;

А в модуле M1:

procedure TFormM1.FormShow(Sender: TObject);
begin
 ...
 if FormSet.tag = 1 then FormSet.Show;
 ...
end;

Может это можно сделать как-то по-другому?


 
Правильный Вася   (2007-07-04 11:27) [1]

каша какая-то, ага, с борщом и компотом
получаются помои

ЗЫ не делай так


 
{RASkov} ©   (2007-07-04 15:35) [2]

> [0] Стас   (04.07.07 11:16)

Модальное окно оно для того и модальное, чтобы отбирать фокус у всех...
В твоем слачае

> есть главная форма - FormMain, несколько форм, вызываемых
> из главной в модальном режиме - FormM1, FormM2 и т.д. И
> есть форма - FormSet, которая может быть вызвана из любой
> из выше перечисленных форм в немодальном режиме

можно поступить иначе.... показывать все бывшие модальные формы в немодальном виде(Show), а на время их показа отключать главную (MainFormEnabled:=False).... Возможно еще и сделать их fsStayOnTop (поверх всех), ну и ФормСет тоже фсСтэйОнТоп...

А твой способ это извращение... можно так же простым вызовом рекреатевнд решить эту проблему... но, имхо, не верное это....



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

Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.04 c
15-1183027152
Ega23
2007-06-28 14:39
2007.07.29
Class vs Record


15-1182946542
de.
2007-06-27 16:15
2007.07.29
RxLib


15-1183542272
Виктор007
2007-07-04 13:44
2007.07.29
Coco/R for Delphi


15-1182861256
de.
2007-06-26 16:34
2007.07.29
О Delphimaster


15-1183153749
Riply
2007-06-30 01:49
2007.07.29
Что-то пустынно стало на форуме





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский