2015-08-23 4 views
0

У меня есть две формы delphi; frmHome и frmStats. На главной форме (frmHome) есть кнопка, и когда вы нажимаете на нее, вы попадаете в frmStats.Несколько форм delphi

На БТН щелчку в frmHome:

frmStats.ShowModal; 
Hide; 

Это прекрасно работает, но на frmStats есть также кнопка, которую я хотел бы принять пользователя обратно в основную форму при нажатии на. Проблема в том, что я получаю сообщения об ошибках.

Если я сделать ссылку на форму, как это я получаю сообщение об ошибке «не могу сделать видимое окно модальным»

implementation 
uses frmHome_u; 

Однако если сделать ссылку, как это, то я получаю сообщение «ссылка кругового блока»

interface 
uses {a bunch of uses} , frmHome_u; 

На BTN мыши в frmStats:

frmHome.ShowModal; 
Hide; 

Как это сделать?

+0

Из небольшого кода, который вы указали, я думаю, что вы пытаетесь скрыть модальную форму. frmStats показано вызовом ShowModal(). В клике на frmStats вы делаете 2 невозможных вещи: 1. вы пытаетесь ShowModal форму, которая уже является модальной, 2 вы пытаетесь скрыть форму, которая является модальной. Что вы пытаетесь сделать здесь? Вы хотите, чтобы две формы были видны и доступны одновременно? Нет проблем, но не с ShowModal. – GuidoG

ответ

0

Модальные формы имеют владельцев. Эти формы владения отключены, когда отображается модальная форма. Форма всегда отображается над ее владельцем.

Вы пытаетесь сделать form1 владельцем формы2, а затем, в свою очередь, иметь форму2 собственной формы1. Это круговое владение не допускается. Это означало бы, что оба окна будут отключены, а каждое окно поверх другого.

Что вам нужно сделать, так это закрыть модальную форму. Заменить

frmHome.ShowModal; 
Hide; 

с

ModalResult := mrOK; 

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

0

Если я понимаю, что вы пытаетесь сделать, это должно работать нормально.

frmStats.Enabled := True; 
frmStats.Show; 
Enabled := False; 
Hide; 

У вас есть обратный код в другой форме.

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

EDIT

Если пользователь закрывает FrmStats и FrmHome является MainForm, то вы должны включить его в OnClose случае.

Смежные вопросы