Lazarus - почему это не работает с ShowModal?

У меня есть две формы в Lazarus. один — frmMain, а другой — frmSub1. оба имеют текстовое поле.

Следующий код работает. т. е. при нажатии кнопки на frmMain значение

procedure TfrmMain.cmdShowClick(Sender: TObject);
begin
  frmSub1.Show  ;
  frmSub1.txtAns.text := txtMark.Text;
end;

Но когда я заменяю .Show на .ShowModal, форма отображается, но frmSub1.txtAns остается пустым.

Любая идея, почему это так?


person itsols    schedule 02.10.2011    source источник


Ответы (1)


Это потому, что ShowModal является блокирующим вызовом, т.е. строка frmSub1.txtAns.text := txtMark.Text; не будет выполняться, пока не вернется. Вы должны переключить порядок операторов, следующее должно работать так, как вы ожидаете:

procedure TfrmMain.cmdShowClick(Sender: TObject);
begin
  frmSub1.txtAns.text := txtMark.Text;
  frmSub1.ShowModal;
end;
person ain    schedule 02.10.2011