![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Вначале первая(главная) форма скрыта, а 2-я показана. При закрытии 2-й нужно свернуть приложение и сделать видимой первую форму. (Чтобы при нажатии на кнопку приложения в панели задач показалась первая форма)
Делал по-разному, например так: Project1: Код:
Application.CreateForm(TForm1, Form1); Application.ShowMainForm:=False; Application.CreateForm(TForm2, Form2); Form2.Show(); Unit2: Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Application.Minimize; Application.ShowMainForm:=True; form1.Visible:=true; end; Всё хорошо, но Form1 после этого не сворачивается, при попытке свернуть окно стандартным способом (кнопка в правом верхнем углу окна). Почему? и как сделать чтоб всё работало? |
#2
|
||||
|
||||
![]() Код:
// Создание формы procedure TForm1.FormCreate(Sender: TObject); begin //Скрыть главную форму Application.ShowMainForm := False; ShowWindow(Application.Handle, sw_Hide); ShowWindow(Form_Main.Handle, sw_Hide); end; // Закрытие формы procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin if MessageBox(Handle, 'Выйти?', 'Вопрос', MB_YESNO + MB_ICONQUESTION) = mrYes then begin //Показать главную форму Action := caFree; Application.ShowMainForm := True; ShowWindow(Application.Handle, SW_RESTORE); ShowWindow(Form_Main.Handle, SW_RESTORE); end else Action := caNone; end; В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
![]() Цитата:
Мне нужно чтобы при закрытии 2-ой формы (та которая у вас модальная) приложение свернулось (чтоб на экране не было ни одной формы). Но чтоб при попытке развернуть приложение из панели задач показалась главная форма. Цитата:
У меня в примере Form1 это главная форма, она то и не сворачивалась, после всех проделанных операций. А второстепенную форму сворачивать пока не нужно, хотя все равно спасибо. Последний раз редактировалось thelv, 16.12.2009 в 12:28. |
#4
|
||||
|
||||
![]() Цитата:
Код:
// Закрытие модальной формы procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin if MessageBox(Handle, 'Выйти?', 'Вопрос', MB_YESNO + MB_ICONQUESTION) = mrYes then begin //Показать главную форму Action := caFree; Application.ShowMainForm := True; ShowWindow(Application.Handle, SW_RESTORE); ShowWindow(Form_Main.Handle, SW_RESTORE); ShowWindow(Form_Main.Handle, SW_MINIMIZE);//Добавь строку end else Action := caNone; end; В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
|||
|
|||
![]() Этот вариант тоже не годится.
Т.к. после закрытия второстепенной формы на доли секунды появляется свернутая Главная форма в левом нижнем углу экрана (над кнопкой Пуск). Последний раз редактировалось thelv, 16.12.2009 в 16:10. |
#6
|
||||
|
||||
![]() Project1
Код:
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.ShowMainForm:=False; Application.CreateForm(TForm2, Form2); Form2.Show(); Application.Run; Unit2 Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Application.ShowMainForm := true; Form1.Show; Application.Minimize; end; Поменял местами пару строк в Unit2. Все работает на ура. Никаких мерцаний и перепрыгиваний форм не наблюдал при десятке опытов ![]() |