У меня есть 2 MDI ChildForms, а Child1 имеет TButton, чтобы открыть Child2. У меня нет никаких проблем, открывая его, в то же время отключите TButton, чтобы предотвратить повторное воссоздание Child2 с помощью TButton.
Теперь проблема возникает, когда я хочу, чтобы TButton of Child1 снова включился, когда я закрыл Child2.
Я получаю ошибку доступа при выполнении этого кода:
procedure TfrmChild2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
child1_u.frmChild1.btnOpenChild2Form.Enabled := True;
Action := caFree;
end;
Я понимаю, что при работе с MDI существует какой-то другой подход. Я понял это, когда сделал код для отключения TButton при открытии во время выполнения ниже:
procedure TfrmMain.btnOpenChild2(Sender: TObject);
begin
TfrmChild2.Create(frmMain);
btnOpenChild2.Enabled := False;
end;
Но включить его обратно, когда форма Child2 закрыта, - задача.
I попытался создать процедуру в MainForm (Владелец), чтобы вызвать включение TButton в Child1:
procedure TfrmMain.EnableButtonAtChild1();
begin
child1_u.frmChild1.btnOpenChild1Form.Enabled := True;
end;
и вызвал во время выполнения во время OnClose of Child2:
procedure TfrmChild2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
EnableButtonAtChild1();
end;
Я новичок в MDI, и мне нужно понять, как работает доступ к компонентам, особенно в этом простом случае. Я буду признателен за любую помощь здесь.