Свойства Form

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
an-na2002
новенький
Сообщения: 10
Зарегистрирован: 01.08.2006 11:16:22

Свойства Form

Сообщение an-na2002 »

У меня несколько форм. При переключении между ними я делаю:
...
Form2.Show;
Form1.Close;
выполнение заканчивается, хотя должна появиться TForm2.
Как сделать чтобы Form1 исчезала, а управление переходило к Form2?
serg_iv
постоялец
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Сообщение serg_iv »

Form2.Show;
Form1.visible:=false;
an-na2002
новенький
Сообщения: 10
Зарегистрирован: 01.08.2006 11:16:22

Сообщение an-na2002 »

Я делаю на Form2 - Close выполнение не заканчивается.
Аватара пользователя
pda
постоялец
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение pda »

Form1 создаётся (как я понял) первой, она становится главной формой приложения. Соответсвенно, с ёё закрытием, завершается и приложение.
an-na2002
новенький
Сообщения: 10
Зарегистрирован: 01.08.2006 11:16:22

Сообщение an-na2002 »

А можно сделать так чтобы в приложении при закрытии Form1 (главной), главной становилась другая форма?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Нельзя - тяжкое наследие Windows MDI и Дельфи... Если хочется чего-то подобного, проще создать невидимую главную форму и никогда ее не закрывать.
haword
постоялец
Сообщения: 301
Зарегистрирован: 02.03.2006 10:34:40

Сообщение haword »

an-na2002 писал(а):А можно сделать так чтобы в приложении при закрытии Form1 (главной), главной становилась другая форма?

сделай три формы, главной формой будет невидемая форма и через нее управляй двумя другими
Аватара пользователя
pda
постоялец
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение pda »

an-na2002 писал(а):А можно сделать так чтобы в приложении при закрытии Form1 (главной), главной становилась другая форма?

Нет, но можно попробовать другое. Я не пробовал такое в FPC, но можно сделать на главной форме обработчик OnClose и устанавливать в нём Action в caHide.
volf
незнакомец
Сообщения: 4
Зарегистрирован: 16.08.2006 12:45:45

Сообщение volf »

Товарищи зачем так все сложно.
Возможно необходимо решить проблему Splash формы (которая отображает красивый логотип программы пока остальная часть программы стартует). Для этого надо изменить стандартный блок в файле проэкта

Код: Выделить всё

  Application.Initialize;
  Application.CreateForm(TfrmSplash, frmSplash);
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;

на такой

Код: Выделить всё

begin
  frmSplash := TfrmSplash.Create(nil);
  try
    frmSplash.Show;
    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TForm2, Form2);
.....
  finally
    FreeAndNil(frmSplash);
  end;
  Application.Run;
end.

где frmSplash - наша формачка отображаемая при старте (соответственно созданная нами в отдельном модуле :-) )
volf
незнакомец
Сообщения: 4
Зарегистрирован: 16.08.2006 12:45:45

Сообщение volf »

хм одну строчку забыл :) хотя и без нее может работать
должно быть так

Код: Выделить всё

begin
  Application.Initialize;
  frmSplash := TfrmSplash.Create(nil);
  try
    frmSplash.Show;
    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TForm2, Form2);
.....
  finally
    FreeAndNil(frmSplash);
  end;
  Application.Run;
end.
Ответить