delphi如何遍历project中所有窗体的Button控件,并返回button的caption

开发窗体功能的同时,由于考虑到将来对操作员权限设置需要精确到按钮层。如果待工程完成后,再使用手工输入窗体名、按钮名到数据表中,不但费时,而且很容易遗漏。所以,设想在设计阶... 开发窗体功能的同时,由于考虑到将来对操作员权限设置需要精确到按钮层。如果待工程完成后,再使用手工输入窗体名、按钮名到数据表中,不但费时,而且很容易遗漏。所以,设想在设计阶段通过运行程序的时候,可以将按钮及窗体名动态写入数据表。其实,单个窗体的所有按钮存入数据表的功能已经实现,只是一次遍历project中的所有窗体所有button控件,未能实现。以下是单个窗体内程序。

procedure Tchecksystem.Button1Click(Sender: TObject);
var i, n: integer;
begin
for i := 0 to self.ControlCount - 1 do
begin
if (self.Components[i] is ttoolbar) then
for n := 0 to (Components[i] as ttoolbar).ButtonCount - 1 do
begin
combobox1.Items.Add((Components[i] as ttoolbar).Buttons[n].Caption);
end;
if (self.Components[i] is tspeedbutton) then
combobox1.Items.Add((Components[i] as tspeedbutton).caption);
if (self.Components[i] is tbutton) then
combobox1.Items.Add((Components[i] as tbutton).caption);

end;
end;
展开
 我来答
百度网友8a627e7
2015-10-02 · TA获得超过304个赞
知道小有建树答主
回答量:705
采纳率:50%
帮助的人:465万
展开全部
在一个公共单元里写个方法,registerButton(aClass:tClass);
在要注册的窗口上直接调用这个方法就可以了
当然还要定义 showButton(aClass:TClass)方法,用来实现按钮的权限控制

所有窗口的类名,在没有初始化的时候是不好得到的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式