Взаимодействие между окнами в дельфи

Если одна форма выполняет какие-либо действия с другой формой, то в списке uses раздела implementation модуля первой формы должна быть ссылка на модуль второй формы.



Для примера рассмотрим приложение, включающее две формы — Form1 и Form2, для которых имеются модули Unit1 и Unit2 соответственно. Далее приводится код модуля Unit1 первой формы Form1.

  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
  5. type
  6. TForm1 = class(TForm)
  7. Button1: TButton;
  8. procedure Button1Click(Sender: TObject);
  9. private
  10. { Private declarations }
  11. public
  12. { Public declarations }
  13. end;
  14. var
  15. Form1: TForm1;
  16. implementation
  17. // Ссылка на модуль второй формы
  18. uses Unit2;
  19. {$R *.DFM}
  20. procedure TForm1.Button1Click(Sender: TObject);
  21. begin
  22. // Операция со второй формой
  23. Form2 := TForm2.Create(Self);
  24. end;
  25. end.

При нажатии кнопки Button1 первой формы на экране отображается вторая форма, до этого невидимая. Поскольку операция со второй формой совершается из модуля первой формы, в разделе implementation первого модуля помещен код uses Unit2.

Ссылку на модуль другой формы можно устанавливать программно, но Delphi позволяет выполнить эту операцию автоматически. Для этого нужно выбрать пункт меню File ? Use Unit (Файл ? Использовать модуль), что приведет к появлению диалогового окна Use Unit (см. скриншот).

После выбора нужного модуля и нажатия кнопки ОК ссылка на него добавляется автоматически.

Если ссылка на требуемый модуль отсутствует, то при компиляции программы появляется диалоговое окно Information (см. скриншот).

Оно сообщает, что одна форма использует другую, но модуль второй формы отсутствует в списке uses модуля первой формы. Для автоматического добавления ссылки на модуль достаточно нажать кнопку Yes.

Форма может выполнять различные операции не только с другой формой, но и дельными компонентами. В этом случае также нужна ссылка на модуль другой формы.

Например:

  1. uses Unit2;
  2. //...
  3. procedure TForm1.Button2Click(Sender: TObject);
  4. begin
  5. Labe11.Caption := Form2.Edit1.Text;
  6. end;

Здесь при нажатии кнопки Button2 формы Form1 в надписи Label1 отображается текст редактора Edit1, расположенного в форме Form2.

Можно выполнять операции с компонентами формы, свернутой или невидимой на экране. Однако в любом случае форма должна быть создана до выполнения любых операций с ней.

Метки: ,
Если Вам интересна эта запись, Вы можете следить за ее обсуждением, подписавшись на RSS 2.0 .

Оставить комментарий или два

*