在delphi中,我要向某函数同时传递一批不同类型的控件,如TEDIT、TButton、Tcheckbox控件,而且个数不定,怎么实现

hangmoyou 2012-09-09 10:31:06
在delphi中,我要向某函数同时传递一批不同类型的控件,如TEDIT、TButton、Tcheckbox控件,怎么实现
具体如下:
我要向aaa函数传递aaa([edt1,btn1,chk1],visible,true),函数就这三个参数,怎么实现,而且第一个参数可变,
要求aaa函数实现以下功能:
edt1.visible :=true;
btn1.visible :=true;
chk1.visible :=true;
求大虾帮忙,我一定送分!!
...全文
183 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
没有吗?你别看帮助文档,直接看controls.pas
还有上面的方法怎么不行了,报什么错?
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
TWinControl也没有visible这个属性啊
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
aaa([edt1,btn1,chk1],visible,true),大家帮我想想,我的参数怎么用[edt1,btn1,chk1]形式穿进去,好像挺难得,如果procedure aaa(var a:array of TWinControl;b:boolean);[edt1,btn1,chk1]传不了啊
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
procedure aaa(var a:array of TWinControl;b:boolean);
var i:integer;
begin
for i:=low(a) to high(a) do
a[i].visible:=b;
end;
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
说错了,是TWinControl
罗捷捷 2012-09-09
  • 打赏
  • 举报
回复
const Array of T;
使用const修饰的数组参数可以使用实参数组
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
我刚刚看了,这个属性Tcontrol没有,怎么办啊
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
visible我只是想告诉函数aaa我要干嘛
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
没有,对了,我的函数参数是这样的aaa([edt1,btn1,chk1],true),这个属性Tcontrol有,但是我的参数[edt1,btn1,chk1]不知道怎么传到aaa中
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
如果是,那你第一个参数可用:array of Tcontrol
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
还有,你传入的属性是TControl有的吗?
hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
怎么还要传入visible即属性?属性名不能当参数
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
各位大虾帮帮忙,来的一定送分
npkaida 2012-09-09
  • 打赏
  • 举报
回复
17 楼是正确的。
用下面代码试试就知道了:

unit Unit1;

interface

uses
。。。。。。;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
CheckBox1: TCheckBox;
Button2: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
procedure aaa(x: array of TWinControl; b: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.aaa(x: array of TWinControl; b: Boolean);
var
i: Integer;
begin
for i := 0 to Length(x) -1 do
x[i].Visible := b;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
aaa([Edit1,Button1,CheckBox1],false);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
aaa([Edit1,Button1,CheckBox1],true);
end;

end.

hsfzxjy 2012-09-09
  • 打赏
  • 举报
回复
你要说报什么错。。
还有,去掉SetLength(a,3);
pathletboy 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

procedure TForm1.btn1Click(Sender: TObject);
begin
aaa([edt2,btn1,chk1],False);
end;
是这里报错,怎么改
[/Quote]
你把我的aaa函数替换掉你自己的,就可以了。
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
procedure TForm1.btn1Click(Sender: TObject);
begin
aaa([edt2,btn1,chk1],False);
end;
是这里报错,怎么改
pathletboy 2012-09-09
  • 打赏
  • 举报
回复
修订下
procedure aaa(x: array of TWinControl; b: Boolean);
var
i: Integer;
begin
for i := 0 to Length(x) -1 do
begin
x[i].Visible := b;
end;
end;
pathletboy 2012-09-09
  • 打赏
  • 举报
回复
procedure aaa(x: array of TWinControl; b: Boolean);
var
i: Integer;
begin
for i := 0 to Length(x) do
begin
x[i].Visible := b;
end;
end;
hangmoyou 2012-09-09
  • 打赏
  • 举报
回复
各位大虾,求救
加载更多回复(1)

5,939

社区成员

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

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