Главная страница
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.02 c
15-1183542272
Виктор007
2007-07-04 13:44
2007.07.29
Coco/R for Delphi


11-1163403161
Kirill
2006-11-13 10:32
2007.07.29
Недоступный сервер MsSQL и KolEdb


1-1179816164
leonidus
2007-05-22 10:42
2007.07.29
Как переконвертировать Color в Hex ?


15-1183613351
exactly
2007-07-05 09:29
2007.07.29
Какие наушники посоветуете?


15-1183246624
Kostafey
2007-07-01 03:37
2007.07.29
С днем рождения ! 1 июля