|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Переход между формами
Есть две формы.
При переходе с первой формы на вторую надо, чтобы первая форма исчезала с экрана и оставалась только вторая. При возврате со второй на первую должна убираться с экрана вторая форма и появляться первая. На первой поставил кнопку и описал переход на вторую следующим образом: form1.visible:=false; form2.show; Чтобы вернуться со второй на первую на кнопке вписал код: form1.visible:=true; form2.close; Всё вроде бы работает. Но... Если при активной второй форме (т.е. первая visible:=false) щелкнуть на панели задач Винды один раз, то окно сворачивается. При повторном щелчке ничего на экране не восстанавливается. Есть предположение, что должна развернуться первая форма, но она visible:=false Подскажите, что я делаю не так. Или может есть другой способ? |
#2
|
|||
|
|||
потому что первая у вас получилась MainForm, т.е. главная форма.
вы кажется пытаетесь что-то типа splash-screen сделать, но это делаеться немного не так. из автосоздания первую форму убираете. на Create во второй форме создаете динамический экземпляр первой, показываете ее ShowModal, после того как ее закроют появиться ваша вторая форма и уже она будет MainForm. правильный вопрос содержит в себе 90% ответа |
#3
|
|||
|
|||
На самом деле Splash-screen делается не совсем так.
Действительно, надо создать форму и "выкинуть" ее из автосоздания. А вот дальше все немного подругому. Эта форма, сплэш, создается руками в файле проекта до создания всех форм, пичем создается через прямой вызов конструктора, а параметр у конструктора ОБЯЗАТЕЛЬНО равен Nil. Далее форма показывается с помощью метода Show. Если в процессе инициализации происходит какое-либо изменение формы сплэша (создания форм, подгрузки каких-либо данные, или внутри по таймеру, например, что-то делается), то обновляем ее с помощью вызова метода ее Update. Форму прячется и уничтожается опять же из файла проекта перед Application.Run. |
#4
|
|||
|
|||
ну да так лучше будет
правильный вопрос содержит в себе 90% ответа |
#5
|
||||
|
||||
А можно, пожалуйста, это все рассказать в стиле "для полного новичка"?
Буду очень благодарен |
#6
|
|||
|
|||
Да, собственно, все и расказанно. Чего еще добавить? Или тебе до нажатия кнопок и названий пунктов меню надо?
Файл проекта будет примерно такой: Код:
program Program1; uses .... MainFrm, // Главная форма - не помню точно синтаксис SplashForm; // Сплэш begin SplashForm := TSplashForm.Create(Nil); SplashForm.Show; Application.Initialize; Application.CreateForm(MainForm, TMainForm); ... For I := 1 To 10 Do Begin SplashForm.ProgressBar1.Position := SplashForm.ProgressBar1.Position + 1; SplashForm.Update; Sleep(200) End; SplashForm.close; SplashForm.Free; Application.Run; end. |
#7
|
||||
|
||||
Приношу извинения за мою тугость.
Могли бы Вы помочь с мне с таким кодом: Код:
program EL; uses Forms, Zastavka in 'Zastavka.pas' {F1_Zastavka}, Beginn in 'Beginn.pas' {F2_Begin}, Test in 'Test.pas' {F3_Test}, Lab in 'Lab.pas' {F4_Lab}, Result in 'Result.pas' {F5_Result}, Help in 'Help.pas' {F6_Help}, Kod in 'Kod.pas' {F3_Kod}; {$R *.res} begin Application.Initialize; Application.Title := 'EL'; Application.CreateForm(TF1_Zastavka, F1_Zastavka); Application.CreateForm(TF2_Begin, F2_Begin); Application.CreateForm(TF3_Test, F3_Test); Application.CreateForm(TF4_Lab, F4_Lab); Application.CreateForm(TF5_Result, F5_Result); Application.CreateForm(TF6_Help, F6_Help); Application.CreateForm(TF3_Kod, F3_Kod); Application.Run; end. |
#8
|
|||
|
|||
Цитата:
на 1 форме кнопка: Код:
form1.hide; form2.show; или .showmodal; на 2 форме кнопка: Код:
form2.hide; form1.show; Все работает и при разворотах. Но наверное не это нужно автору? ) Последний раз редактировалось malekskv, 20.03.2010 в 18:26. |
#9
|
||||
|
||||
Спасибо malekskv!
Лучше поздно чем никогда |
#10
|
|||
|
|||
))
Спасибо, Малекс! )) А то те двое напугали вконец.... Ты не из Нефтекамска? ))))
|