Delphi类的入门例子(8): 遍历窗体中所有控件的函数

//显示窗体中所有控件的函数

function GetCtrls(Control: TWinControl; List: TStringList): Boolean;
var
 i: Integer;
 obj: TWinControl;
begin
 for i := 0 to Control.ControlCount-1 do
 begin
  obj := TWinControl(Control.Controls[i]);
  List.Add(obj.Name);

//如果控件中包含其他控件, 则递归调用

if obj.ControlCount > 0 then
  begin
   GetCtrls(obj, List);
  end;
 end;
 Result := True;
end;

//调用测试

procedure TForm1.Button1Click(Sender: TObject);
var
 list: TStringList;
begin
 list := TStringList.Create;
 GetCtrls(Self, list);  {调用函数}
 ShowMessage(list.Text); {显示窗体中所有控件的名称}
 list.Free;
end;

时间: 2024-10-28 08:02:35

Delphi类的入门例子(8): 遍历窗体中所有控件的函数的相关文章

Delphi类的入门例子(7): 遍历窗体的所有父类

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender:

WinForm遍历窗体所有子控件的方法_C#教程

本文实例讲述了WinForm遍历窗体所有子控件的方法.分享给大家供大家参考,具体如下: /// <summary> /// C# 只遍历控件子控件,不遍历孙控件 ///当控件有子控件时,需要用递归的方法遍历,才能全部列出控件上的控件 /// </summary> /// <typeparam name="T">控件类型</typeparam> /// <param name="control">要遍历的控件

《Visual Basic 2012入门经典》----1.5 在窗体中添加控件

1.5 在窗体中添加控件 Visual Basic 2012入门经典设置窗体的初始属性后,现在通过在窗体中添加对象来创建用户界面.可置于窗体中的对象被称为控件.有些控件有可见的界面,用户可与之进行交互:而另外一些控件对用户总是不可见的.本示例将使用这两种控件.屏幕的左边是标题为"Toolbox"的竖直选项卡,单击"Toolbox"选项卡显示"Toolbox"窗口以显示最常用的控件:如果有必要,单击"Common Controls&quo

C#实现窗体中所有控件跟随窗体尺寸的自由变换

/**********************************C#中代码实现控件随窗体的自由变换********************************************/ // 文章出处: 星魂工作室 作者:月云 // 2008.8.4 /**********************************************************************************************************/ using Syst

Windows窗体控件如何给WPF窗体中的控件传递信息????????

问题描述 请问大家,我这里有两个工程,一个是WPF窗体工程,一个是Windows窗体控件.然后WPF窗体工程中加载了Windows窗体控件.现在我再在WPF窗体中加入两个TextBox控件,我希望鼠标在Windows窗体控件内移动鼠标的时候,Windows窗体控件的Mouse_Move事件触发,并且该事件中能够编写代码把鼠标当前位置的X,Y坐标分别显示在WPF窗体的TextBox控件内.请问,这如何实现呢? 解决方案 解决方案二:自己顶一下.望大家帮忙.解决方案三:PostMessage解决方案

怎样在一个类中调用另一个窗体中的控件?

问题描述 一个串口接收类recvClass,有个线程recvThread接收数据,一个窗体FORM2,怎样在FORM2的listbox1中添加recvThread到的数据?有什么好方法吗? 解决方案 解决方案二:是否可以考虑在你接收数据的线程中访问Form2的listbox1控件注:若采用上述方法,则需要考虑采用Invoke方法来实现在线程recvThread中调用listbox1控件具体示例可参考网络上的那些在多线程程序中访问并更新主线程进度条处理解决方案三:recvClass类里:publi

请问如何在类中使用窗体和窗体中的控件

问题描述 请各位前辈多多指教,谢谢 解决方案 解决方案二:窗体和控件都是类,控件的Modify属性设置成public就可以在其他类中访问了.解决方案三:参考program.cs,它就是一个非窗口类,调用了主窗口.

C# 类中的线程 如何给窗体中的控件赋值

问题描述 如:项目中现有个窗体名称为FrmMain这个窗体中个ListBox控件然后FrmMain窗体中调用RunClass类的Run()方法RunClass类如下:其中类中一个启动线程的方法ThreadcstTread;//启动线程的办法publicvoidrun(){cstTread=newThread(newThreadStart(start));cstTread.Start();}//线程中调用的方法publicvoidstart(){while(true){//问题来了,我想要在这里给

C#窗体中删除控件和与控件相关的代码

问题描述 C#窗体应用程序中,删除一个控件,直接delete会导致程序出错,但是与控件相关的代码太多,一行一行的删代码太费时,怎么办?删除控件的时候怎么才能把与之相关的代码删了? 解决方案 本帖最后由 sinat_34493579 于 2016-05-30 10:46:42 编辑解决方案二:你要的功能太不安全,删一个控件代码都没了,万一误删了怎么办?代码白写?解决方案三:引用1楼xdashewan的回复: 你要的功能太不安全,删一个控件代码都没了,万一误删了怎么办?代码白写? 删一个控件,不删与