Ошибка при открытии MDI ChildForm из другой кнопки MDI ChildForm через TMenuItem в MDI ParentForm - PullRequest
0 голосов
/ 19 января 2020

У меня есть 2 формы MDIChild и форма MDIParent с TMainMenu. В TMainMenu у меня есть следующая процедура TMenuItem.OnClick для открытия ChildForm2:

procedure TfrmMain.miOpenChildForm2Click(Sender: TObject);
begin
  TfrmChildForm2.Create(self).Show;
end;

Теперь я хочу получить доступ к вышеуказанной процедуре из ChildForm1 с помощью процедуры TButton.OnClick, приведенной ниже:

procedure TfrmChildForm1.btnOpenChildForm2Click(Sender: TObject);
begin
  frmMain.miOpenChildForm2Click; // Error Here: E2035 Not enough actual parameters
End;

Я получаю сообщение об ошибке в описанной выше второй процедуре:

E2035 Недостаточно фактических параметров

Я не знаю точно, где это исправить. Я пытался поставить '()' в конце вызова процедуры, но безрезультатно.

1 Ответ

2 голосов
/ 19 января 2020

Определение процедуры

procedure TfrmMain.miOpenChildForm2Click(Sender: TObject);

говорит о том, что процедура ожидает получения параметра Sender типа TObject. Вызов с frmMain.miOpenChildForm2Click; не передает этот параметр. Параметр не является обязательным.

Sender предназначен для того, чтобы рассказать вам, что вызвало событие, для использования в тех случаях, когда это имеет значение, например, когда вы используете один обработчик событий для нескольких элементов управления. Это позволяет вам определить, где произошел вызов к событию.

В качестве параметра можно использовать кнопку или элемент меню, который был нажат во время вызова, в качестве параметра

frmMain.miOpenChildForm2Click(btnOpenChildForm2);

Если это не так Независимо от того, откуда поступил вызов, вы можете передать nil вместо

frmMain.miOpenChildForm2Click(nil);

. Примечание: MDI устарел не менее десяти лет, и Windows не поддерживал его в течение хотя бы так долго. Современные приложения не используют MDI, и новые разработки, скорее всего, не должны включать его.

...