Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2008, 22:02
alexpoliv alexpoliv вне форума
Прохожий
 
Регистрация: 19.12.2008
Сообщения: 10
Репутация: 10
По умолчанию Переход между формами

Есть две формы.
При переходе с первой формы на вторую надо, чтобы первая форма исчезала с экрана и оставалась только вторая.
При возврате со второй на первую должна убираться с экрана вторая форма и появляться первая.

На первой поставил кнопку и описал переход на вторую следующим образом:
form1.visible:=false;
form2.show;

Чтобы вернуться со второй на первую на кнопке вписал код:
form1.visible:=true;
form2.close;

Всё вроде бы работает. Но...
Если при активной второй форме (т.е. первая visible:=false) щелкнуть на панели задач Винды один раз, то окно сворачивается. При повторном щелчке ничего на экране не восстанавливается. Есть предположение, что должна развернуться первая форма, но она visible:=false

Подскажите, что я делаю не так. Или может есть другой способ?
Ответить с цитированием
  #2  
Старый 23.12.2008, 10:58
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

потому что первая у вас получилась MainForm, т.е. главная форма.

вы кажется пытаетесь что-то типа splash-screen сделать, но это делаеться немного не так.
из автосоздания первую форму убираете.
на Create во второй форме создаете динамический экземпляр первой, показываете ее ShowModal, после того как ее закроют появиться ваша вторая форма и уже она будет MainForm.
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #3  
Старый 23.12.2008, 14:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На самом деле Splash-screen делается не совсем так.
Действительно, надо создать форму и "выкинуть" ее из автосоздания. А вот дальше все немного подругому.

Эта форма, сплэш, создается руками в файле проекта до создания всех форм, пичем создается через прямой вызов конструктора, а параметр у конструктора ОБЯЗАТЕЛЬНО равен Nil. Далее форма показывается с помощью метода Show. Если в процессе инициализации происходит какое-либо изменение формы сплэша (создания форм, подгрузки каких-либо данные, или внутри по таймеру, например, что-то делается), то обновляем ее с помощью вызова метода ее Update. Форму прячется и уничтожается опять же из файла проекта перед Application.Run.
Ответить с цитированием
  #4  
Старый 24.12.2008, 10:17
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

ну да так лучше будет
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #5  
Старый 20.03.2010, 00:05
Аватар для FAVORIT
FAVORIT FAVORIT вне форума
Прохожий
 
Регистрация: 02.09.2009
Сообщения: 9
Репутация: 10
По умолчанию

А можно, пожалуйста, это все рассказать в стиле "для полного новичка"?
Буду очень благодарен
Ответить с цитированием
  #6  
Старый 20.03.2010, 02:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, собственно, все и расказанно. Чего еще добавить? Или тебе до нажатия кнопок и названий пунктов меню надо?

Файл проекта будет примерно такой:
Код:
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  
Старый 20.03.2010, 15:28
Аватар для FAVORIT
FAVORIT FAVORIT вне форума
Прохожий
 
Регистрация: 02.09.2009
Сообщения: 9
Репутация: 10
По умолчанию

Приношу извинения за мою тугость.
Могли бы Вы помочь с мне с таким кодом:

Код:
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  
Старый 20.03.2010, 18:22
malekskv malekskv вне форума
Прохожий
 
Регистрация: 13.11.2009
Сообщения: 44
Репутация: 14
По умолчанию

Цитата:
Сообщение от alexpoliv
Есть две формы.
При переходе с первой формы на вторую надо, чтобы первая форма исчезала с экрана и оставалась только вторая.
При возврате со второй на первую должна убираться с экрана вторая форма и появляться первая.

На первой поставил кнопку и описал переход на вторую следующим образом:
form1.visible:=false;
form2.show;

Чтобы вернуться со второй на первую на кнопке вписал код:
form1.visible:=true;
form2.close;

Всё вроде бы работает. Но...
Если при активной второй форме (т.е. первая visible:=false) щелкнуть на панели задач Винды один раз, то окно сворачивается. При повторном щелчке ничего на экране не восстанавливается. Есть предположение, что должна развернуться первая форма, но она visible:=false

Подскажите, что я делаю не так. Или может есть другой способ?

на 1 форме кнопка:

Код:
form1.hide;
form2.show; или .showmodal;


на 2 форме кнопка:

Код:
form2.hide;
form1.show;

Все работает и при разворотах.

Но наверное не это нужно автору? )

Последний раз редактировалось malekskv, 20.03.2010 в 18:26.
Ответить с цитированием
  #9  
Старый 09.10.2010, 19:49
Аватар для FAVORIT
FAVORIT FAVORIT вне форума
Прохожий
 
Регистрация: 02.09.2009
Сообщения: 9
Репутация: 10
По умолчанию

Спасибо malekskv!

Лучше поздно чем никогда
Ответить с цитированием
  #10  
Старый 03.11.2010, 13:38
alexan0308 alexan0308 вне форума
Прохожий
 
Регистрация: 16.05.2010
Сообщения: 19
Репутация: 10
По умолчанию ))

Спасибо, Малекс! )) А то те двое напугали вконец.... Ты не из Нефтекамска? ))))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter