遍历两个panel上的控件

w84271765 2012-03-30 01:12:43
遍历两个panel上的控件

传入参数值为 0 时,遍历2个Panel

传入参数值为 1 时,遍历1个Panel

怎么写一个通用的过程?

for i := 0 to Panel[i].ComponentCount - 1 do
begin
if Panel[i].Components[i] is Edit then begin
if (Panel[i].Components[i] as Edit).Properties.ReadOnly = true then
Edit(Self.Components[i] as TcxDBTextEdit).Properties.ReadOnly := False;
end;
end;

//Panel[i] 类似
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-03-30
  • 打赏
  • 举报
回复
参数改为TPanel,直接传Panel更好识别

procedure SetPnlCtrl(Pnl:TPanel);
var i:integer;
begin
for i := 0 to Pnl.ControlCount-1 do
begin
if Pnl.Controls[i] is Edit Then
begin
...
end;
end;
end;
广州佬 2012-03-30
  • 打赏
  • 举报
回复
begin、end没配对,勘正下:
procedure EComponents(const x:integer=0);
var i,j:integer;
Panel:array of Tpanel;
begin
setlength(Panel,2);
Panel[0]:=Form1.Panel1;//假定 Panel1 在 Form1 中
Panel[1]:=Form1.Panel2;//假定 Panel2 在 Form1 中
for j:=0 to 1-x do begin
for i := 0 to Panel[j].ComponentCount-1 do begin
if Panel[j].Components[i] is TEdit then begin
if (Panel[j].Components[i] as TEdit).Properties.ReadOnly then begin
//......
end;
end;
end;
end;
end;
广州佬 2012-03-30
  • 打赏
  • 举报
回复
调用时:
EComponents;//遍历2个Panel
EComponents(1);//遍历1个Panel
广州佬 2012-03-30
  • 打赏
  • 举报
回复
procedure EComponents(const x:integer=0);
var i,j:integer;
Panel:array of Tpanel;
begin
setlength(Panel,2);
Panel[0]:=Form1.Panel1;//假定 Panel1 在 Form1 中
Panel[1]:=Form1.Panel2;//假定 Panel2 在 Form1 中
for j:=0 to 1-x do begin
for i := 0 to Panel[j].ComponentCount-1 do begin
if Panel[j].Components[i] is TEdit then begin
if (Panel[j].Components[i] as TEdit).Properties.ReadOnly then
//......
end;
end;
end;
end;
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧