WeG*_*ars 0 delphi user-interface
我有一个带有大型 GUI 的程序。GUI 分为几个选项卡。用于管理 GUI 的代码(例如,一个选项卡包含一个完整的 Windows 资源管理器克隆)非常大。
将如此大的 GUI 拆分为多个文件但又不将 GUI 拆分为多种形式(在运行时)的最佳方法是什么?
使用嵌入式表单。通过这种方式,您可以将每个文件维护在一个单独的文件中,并且在运行时它们似乎都是同一 GUI 表单的一部分。
创建一个全局变量来存储当前表单:
MyForm: TForm;
Run Code Online (Sandbox Code Playgroud)
您不想自动创建表单,因此将它们从项目选项 -> 表单自动创建列表中删除。相反,以这种方式动态创建它们:
MyForm := TMyForm.Create(Application);
Run Code Online (Sandbox Code Playgroud)
然后根据需要设置属性,包括以下内容:
我假设您在要嵌入表单的选项卡上有一个名为 EmbeddedMyForm_panel 的面板。无论如何,这就是我所做的。您也可以直接使用 TTabSheet。
with MyForm do begin
BorderIcons := [];
BorderStyle := bsNone;
parent := EmbeddedMyForm_panel;
Align := alClient;
Visible := true;
end;
Run Code Online (Sandbox Code Playgroud)
我参与过许多项目,这些项目非常成功地使用这种方法将单独的表单嵌入到一个大型 GUI 内的大量选项卡上。
添加:当我问他们为什么不使用框架时,我被告知主窗体上有十几个或更多嵌入式窗体,用框架加载它会花费很长时间,因为 IDE 会抱怨无法找到表单上几乎每个框架的祖先表单。您需要首先打开所有框架窗体,以便在不收到 IDE 任何警告的情况下打开主窗体。如果您只想处理主表单本身(例如编辑主菜单)并且根本不需要处理任何框架,那么这是特别烦人的。