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

Вниз

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

 
Стас   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
3-1177356298
Jeeb
2007-04-23 23:24
2007.07.29
Большая база Access


15-1182946667
IMHO
2007-06-27 16:17
2007.07.29
Вопрос начальникам отделов программирования


2-1183363790
Aibo
2007-07-02 12:09
2007.07.29
как создавать файл при помощи WinApi


15-1183264622
koha
2007-07-01 08:37
2007.07.29
Просмотрел фильм "Курск Субмарина в мутной воде"


15-1183399119
Rouse_
2007-07-02 21:58
2007.07.29
Хм... Вопрос любителям WinAPI :)