Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вызов одной формы из другой.Прошу совета.


Автор: KibARG 2.5.2007, 18:17
Добрый день.
Прошу вашего совета по вызову форм. Решил написать игру. В кратце, есть одно главное окно, и в нём кнопка, по нажатии которой должна открыться другая форма, но как это релиазовать?Извиняюсь за столь ламерский вопрос,но так и не смог разобраться.....
Заранее спасибо.

Автор: z-END 2.5.2007, 18:28
Цитата(KibARG @  2.5.2007,  19:17 Найти цитируемый пост)
 Решил написать игру.

может сначала HelloWorld написать? smile
Код

otherForm.Show;
otherForm.ShowModal; 

etc

Автор: KibARG 2.5.2007, 19:35
спасибо, если ставлю showmodal  то выдает ошибку "cannot make a visible window modal'
Код

procedure Tarena1.Magazin1Click(Sender: TObject);
var otherbattle1:tform;
begin
otherBattle1.showmodal;
end;


прописывать так? 

Автор: WERITAS 2.5.2007, 19:48
А у тебя Форма не создана, надо ее создать, типа availables сделать 

Автор: KibARG 2.5.2007, 20:41
типа как? где прописать avilaibles?  в параметрах нету такого......

Автор: ellis 2.5.2007, 21:28
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
TextForm.ShowModal;
end;

end.

Автор: KibARG 2.5.2007, 21:45
WERITAS, 
Форма у меня создана полностью, нарисована и код для неё написан, надо её только кнопкой открыть.....


Код

procedure TForm1.Button1Click(Sender: TObject);
begin
TextForm.ShowModal;
end;
end.


TextForm?  это что?

Автор: lukas 2.5.2007, 21:51
KibARG, 

для начала нужно создать эту форму... (динамически)...


Код

procedure Tarena1.Magazin1Click(Sender: TObject);
var otherbattle1:tform;
begin

otherbattle1:=TForm.Create(nil);
otherbattle1.parent:=nil;
end;

Автор: maniaks1 2.5.2007, 21:56
KibARG, 
Ну если у тебя форма создана, то если она у тебя является второй, то вызвать можно так:

Код

  Form2.Show;


Если при этом нужно скрыть первую, то так:

Код

  Form2.Show;
  Form1.Hide;
 

Автор: lukas 2.5.2007, 21:56
KibARG, если форма создана... то просто могла произойти путаница со свойствами MDI формы... посмотри внимательно на форму..

или... возможен такой исход.. что форма уже запущена ... form.show и тут ты пытаешься открыть ее чере showmodal... (в этом случае даже если скроешь форму form.hide и вызовешь showmodal  будет такая ошибка...)


попробуй так


Код

...
form.close; // скорее всего форма запущена но скрыта
form.showmodal;

Автор: ellis 2.5.2007, 22:02
TextForm - это имя формы которая запустится при нажатии на кнопку

Автор: KibARG 2.5.2007, 22:07
maniaks1, твоим методом пробывал, ничего, не каких реакций.



lukas  таки надо было её в начале создать динамически

большое спасибо, теперь хоть с мертвого места сдвинусь.

Автор: ellis 2.5.2007, 22:10
а как запустить форму ? отрывается  форма1 и сразу же открывается форма2 
пробывал так 
Код

procedure TTestForm.FormCreate(Sender: TObject);
begin
  TextForm.Show;
end;

end.


выделяет синим строку "Application.CreateForm(TTextForm, TextForm);"

Автор: ellis 3.5.2007, 18:59
Всё в своём вопросе разобрался сам smile

Автор: KibARG 3.5.2007, 21:53
пробую так же вторую форму открыть, оно ругается что форма не инициализирована

Код

procedure Tarena1.Magazin1Click(Sender: TObject);
var otherbattle1:tform;
begin
otherbattle1:=TForm.Create(nil);
otherbattle1.parent:=nil;
end;


открываю этим кодом....


инициализировать форму это 

otherform2.InitiateAction?

Добавил, ругается что ошибка в доступе к памяти

Автор: lukas 3.5.2007, 22:04
У меня все прекрасно работает и запускается...


Код

procedure TForm1.Button1Click(Sender: TObject);
  var
  FRM:TForm;
begin
  frm:=TForm.Create(self);
  frm.Parent:=nil ;
  frm.Name:='form';
  TForm(findcomponent('form')).ShowModal;
  {frm.Show;  }
end;



Автор: KibARG 3.5.2007, 23:44
твой код создает пустую форму. а мне надо открыть уже созданую, как в прошлый раз, в прошлый раз с этим кодом всё работало, а сейчас требует инициализировать форму.....

Автор: Reptile 4.5.2007, 11:59
Что-то я не пойму: если форма создана,0 и создается автоматически, и точно подключена к первой(в первой форме в uses), то 
Код

otherForm.Show;
otherForm.ShowModal; 

Должно работать. При условии что вторая форма точно без ошибок.

Автор: KibARG 6.5.2007, 14:42
нашел, дело было в том что я её не описал в uses unit эту форму, щас всё пашет....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)