@worldand
Юзер

Как создать событие закрытия формы из другого Юнита?

Суть такова: в Delphi (и не спрашивайте, почему именно в Delphi) нужно в одном юните создать форму из другого. Делается это подключением соответствующего Юнита.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, LView;
...
procedure TForm2.ButtonForwardClick(Sender: TObject);
begin
  LView.name := 'l'+Form2.RadioGroup1.ItemIndex+'.rtf'; // LView - 3-й юнит
  Form3.Create(self);
  Form2.Enabled := false;
end;

После создания формы 3, вторая отключается. Однако включить её из 3-го юнита нельзя, ибо компилятор начинает ругаться на цикличность обращений юнитов.
Вопрос такой: можно в юните 2 прописать ивент на закрытие формы 3?
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
1. Перемести «uses соответствующую форму» из интерфейса в implementation. Такие циклические обращения разрешены.
Правило хорошего тона: что угодно — uses, const, var — желательно держать в implementation, если только они не нужны интерфейсу.
Впрочем, подобный циклический «комок грязи» говорит о том, что архитектура программы плохо продумана, и для больших программ это нежелательно.

2. Явно неверный код Form3.Create(self);
Если создать форму — то правильно Form3 := TForm3.Create(self);
Если кто-то создал, а ты повторно вызвал конструктор — зачем такое?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы