Несколько форм Delphi

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

На btn щелкните в frmHome:

frmStats.ShowModal;
Hide;

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

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

implementation
uses frmHome_u;

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

interface
uses  {a bunch of uses} , frmHome_u;

Нажмите btn в frmStats:

frmHome.ShowModal;
Hide;

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

2 ответа

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

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

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

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

РЕДАКТИРОВАТЬ

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

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

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

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

frmHome.ShowModal;
Hide;

с

ModalResult := mrOK;

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

Другие вопросы по тегам