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; 展开
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; 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询