Главная страница
    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.043 c
15-1182582665
IMHO
2007-06-23 11:11
2007.07.29
О декомпиляции, клонировании, Dephi и Java


2-1183238847
Riply
2007-07-01 01:27
2007.07.29
Использование SetFilePointerEx.


15-1183403720
исследователь
2007-07-02 23:15
2007.07.29
Несоотвествие браузера


15-1183143709
ferr
2007-06-29 23:01
2007.07.29
Что требуется для поездки в Украину?


11-1161781122
D[u]fa
2006-10-25 16:58
2007.07.29
Turbo Delphi Win32





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