从字符串创建delphi表单

在某些情况下,您可能不知道表单对象的确切类类型。您可能只有带有表单类名称的字符串变量,例如“TMyForm”。...

在某些情况下,您可能不知道表单对象的确切类类型。您可能只有带有表单类名称的字符串变量,例如“TMyForm”。

Elevated view of programmers working on laptops

请注意,Application.CreateForm()过程的第一个参数需要TFormClass类型的变量。如果可以提供TFormClass类型变量(从字符串),则可以从其名称创建表单。

函数的作用是:从字符串中查找类类型。搜索将遍历所有注册的类。要注册类,可以发出RegisterClass()过程。当FindClass函数返回TPersistentClass值时,将其强制转换为TFormClass,并将创建一个新的TForm对象。

示范练习

  1. 创建一个新的Delphi项目,并将主表单命名为:MainForm(TMainForm)。
  2. 向项目中添加三个新表单,并将其命名为:
  3. 第一表格(TFirstForm)
  4. 第二表格(第二表格)
  5. 第三种形式(第三种形式)
  6. 从“项目选项”对话框的“自动创建表单”列表中删除三个新表单。
  7. 在主窗体上删除一个列表框并添加三个字符串:“TFirstForm”、“TSecondForm”和“TThirdForm”。
procedure TMainForm.FormCreate( Sender: TObject);begin RegisterClass(TFirstForm); RegisterClass(TSecondForm); RegisterClass(TThirdForm);end;

在MainForm的OnCreate事件中注册类:

procedure TMainForm.CreateFormButtonClick( Sender: TObject);var s : string;begin s := ListBox1.Items[ListBox1.ItemIndex]; CreateFormFromName(s);end;

单击按钮后,查找所选表单的类型名称,并调用自定义CreateFormFromName过程:

procedure CreateFormFromName( const FormName : string);var fc : TFormClass; f : TForm;begin fc := TFormClass(FindClass(FormName)); f := fc.Create(Application); f.Show;end; (* CreateFormFromName *)

如果在列表框中选择了第一项,“s”变量将保存“TFirstForm”字符串值。CreateFormFromName将创建TFirstForm表单的实例。

  • 发表于 2021-09-22 01:53
  • 阅读 ( 186 )
  • 分类:编程

你可能感兴趣的文章

将项目添加到tpopup delphi菜单

...单项添加到菜单时分配的标记值。 tmenuitem中的自定义字符串 在实际应用程序中,您可能需要更大的灵活性。假设每个项目将“代表”一个网页-需要一个字符串值来保存网页的URL。当用户选择此项时,您可以打开默认web浏览...

  • 发布于 2021-09-06 15:10
  • 阅读 ( 165 )

了解delphi编程的基础知识

...索DelphiIDE的主要部分和工具。 “你好,世界!” 通过创建一个简单的项目、编写代码、编译和运行项目,开始您对Delphi应用程序开发的概述。然后,通过创建第二个简单的Delphi应用程序来了解属性、事件和Delphi Pascal—使您...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 182 )

理解delphi项目和单元源文件

简而言之,Delphi项目只是组成由Delphi创建的应用程序的文件集合。DPR是用于Delphi项目文件格式的文件扩展名,用于存储与项目相关的所有文件。这包括其他Delphi文件类型,如表单文件(DFM)和单元源文件(.PASs)。 由于Delphi...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 172 )

在delphi的tdbgrid中显示和编辑备注字段

...内容,需要在字段的OnGetText事件中附加一行简单的代码。创建OnGetText事件处理程序的最简单方法是在设计时使用字段编辑器为备注字段创建持久字段组件: 将TDataset子体组件(TTable、TQuery、TADOTable、TADOQuery…)连接到“TestTable...

  • 发布于 2021-09-10 20:47
  • 阅读 ( 163 )

德尔福单元剖析(德尔福初学者版)

...的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一个应用程序或表单模板开始。项目由创建目标应用程序所需的所有文件组成。 选择“查看...

  • 发布于 2021-09-10 20:53
  • 阅读 ( 180 )

用delphi编写网络感知应用程序

...简化了使用TCP/IP和相关协议与其他系统通信的应用程序的创建。使用套接字,您可以通过与其他机器的连接进行读写,而无需担心底层网络软件的细节。 Delphi组件工具栏上的internet调色板承载TServerSocket和TClientSocket组件以及TcpCl...

  • 发布于 2021-09-10 23:39
  • 阅读 ( 197 )

在系统托盘中放置delphi应用程序

...art按钮的右侧)。 我们把它放在托盘上吧 幸运的是,创建一个在系统托盘中运行的应用程序非常简单——只需要一个(API)函数Shell\u NotifyIcon即可完成任务。 该函数在ShellAPI单元中定义,需要两个参数。第一个是一个标志...

  • 发布于 2021-09-11 00:20
  • 阅读 ( 177 )

优化delphi程序的内存使用

...计算机的速度。 02 2006年 何时在delphi应用程序中创建表单 假设您要设计一个包含主窗体和两个附加(模态)窗体的程序。通常,根据您的Delphi版本,Delphi将把表单插入到项目单元(DPR文件)中,并包含一行,用于在...

  • 发布于 2021-09-15 03:43
  • 阅读 ( 198 )

拖动不带标题栏的delphi表单

...程序的情况,我们怎样才能移动这样的窗口呢?事实上,创建带有非标准标题栏甚至非矩形窗体的窗口是可能的。在这种情况下,Windows如何知道窗口的边框和角在哪里? wm_nchittest windows消息 Windows操作系统在很大程度上依赖...

  • 发布于 2021-09-15 03:49
  • 阅读 ( 143 )

如何用delphi搜索文件和文件夹(search for files and folders with delphi)

...Attr,文件的属性如上所述。。Name包含一个表示文件名的字符串,不包含路径信息。找到的文件的大小(字节)。。时间将文件的修改日期和时间存储为文件日期。。FindData包含其他信息,如文件创建时间、上次访问时间以及长...

  • 发布于 2021-09-15 03:52
  • 阅读 ( 211 )
bep73551
bep73551

0 篇文章

相关推荐