что нужно:
- две формы, "основная" и "настройки"
- обе формы "рабочие" (auto-create)
- "основная" использует "настройки" для работы (в режиме "онлайн")
- при показе формы "настройки" нужно поведение "как модальное", но без создания/уничтожения формы настроек
- пока идет "настройка" не нужно трогать "основную" форму, точнее ее "как-бы" незаметно подменяет форма настроек (для пользователя это "как-бы" одна и та-же форма, работа не должна вызывать когнитивного диссонанса)
- сделали настройки, скрываем форму настроек, показываем основную форму
по типу сначало подбираем ботинки, потом одеваем их, и только потом пристегиваем лыжи...
можно опустить процесс подбора, но ботинки как бы должны быть в наличие ... как-то так, не нужно удалять их, после того, как пристегнули лыжи :о)
последовательность работы примерно следующая:
1. запуск приложения, показ основной формы
2. теперь можно работать, но можно и под-дать...(простите, под-настроиться, но не обязательно)
3. работаем или настраиваемся
4. скрыли "основную" форму
5. показали форму "настроек"
6. что-то "подкрутили"
7. скрыли форму "настроек"
8. показали основную "форму"
9. работаем
как в той итории: ... достали сумочку, открыли сумочку, достали кошелку, закрыли сумочку... :о)
выкрутился примерно так (условно-сокращенно):
- Код: Выделить всё
procedure TForm1.XXX_Click(Sender: TObject);
begin
...
Form2.Show;
Form2.BringToFront;
self.Hide;
...
procedure TForm2.FormHide(Sender: TObject);
begin
...
Form1.Show;
Form1.BringToFront;
...
end;
особенность "скрытия" формы настроек:
- можно скрывать "програмно" (основная логика поведения)
- можно скрывать "механически" кнопкой "подчеркивание" на тулбаре окна, тогда "как-бы приложение все" скрывается, т.е. опять нормальное поведение, не выходит за рамки логики
- можно скрывать "механически" кнопкой "крестик" на тулбаре окна, тогда форма настроек "закрывается" (*) и появляется основная форма (основная логика поведения)
(*) - в инете пишут что это "нормальное поведение" 2го окна, т.е. оно не закрывается как 1-е основное окно с закрытием приложения, а просто скрывается, но при этом не удаляется и вызывается обработчик формы OnClose(), в отличие от "обычного сокрытия", во всем остальном это "нормальное" поведение сокрытия/показа неосновной формы (конец цитатов :о)
add условие: главной формы не должно быть видно, пока работаем с формой настройки, печатаем, двигаем, ресайзим её или чего еще :о)
ВОПРОСЫ
1. какие возможны подводные камни при таком подходе?
2. по поводу "нормальности" поведения сокрытия 2го неосновного окна, это действительно так? (в смысле "выкусы" из инета верны?!)
3. т.е. это нормальное поведение "всего комбайна" без подводных камней, утечки памяти итд? или как?
спасибо, всех с новым годом!