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

#modal-dialog #lazarus

#модальный диалог #lazarus

Вопрос:

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

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

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

Но когда я заменяю.Показать с помощью .ShowModal, он показывает форму, но frmSub1.txtAns пуст.

Есть идеи, почему это так?

Ответ №1:

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

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