如何用语句设定数个Button的属性?比如:(25分)

  • 主题发起人 主题发起人 狼牙
  • 开始时间 开始时间

狼牙

Unregistered / Unconfirmed
GUEST, unregistred user!
button1.enabled:=false;
button2.enabled:=false;
button3.enabled:=false;
button4.enabled:=false;
button5.enabled:=false;

我自己设定:
for i:=1 to 12 do
Tbutton(i).enabled:=false运行出错。


 
你的如此写法比较chun,
改成这样吧:
for I :=0 to 窗口名.commponentcount-1 do
begin
if 窗口名.commponents is TButton then
窗口名.commponents.enabled :=false;
end;
 
commit的方法设置了窗口中所有的TButton类的实例的属性;
如果你只想设置一部分,可以改一下:
for I :=0 to 窗口名.commponentcount-1 do
begin
if 窗口名.commponents is TButton then
begin
if 窗口名.commponents<>YourButton //YourButton 是你不想改的button
then 窗口名.commponents.enabled :=false;
end;
end;

如果可以的话,你最好将这些button放到一个容器中(如panel),
然后panel.enabled:=false;就行了;
 
1:
for i:=0 to self.commponentcount-1 do
begin
if self.commponents is TButton then
TButton(self.commponents).enabled :=false;
end;

2:
for i:=1 to 5 do
begin
TButton(self.findcommponent('button'+inttostr(i))).enabled :=false;
end;
 
还可以这样:
把你想Enabled掉的Button的Tag设成一个值,
比如:1
for I :=0 to 窗口名.commponentcount-1 do
begin
if 窗口名.commponents is TButton then
begin
if 窗口名.commponents.Tag=1 then
窗口名.commponents.enabled :=false;
end;
end;
俺认为更为实用

 
同意Commit补充意见,我就是这样做的;
用好Tag真的可以做很多设置一类的事情。如:检测字段是否为空或合法……
 
ERROR: Undeclared identifier 'commponents'
ERROR: Undeclared identifier 'findcommponent'
ERROR: Undeclared identifier 'commponentcount'

Why?这是为何?在delphi帮助里面都差不到这几个咚咚的说明。
D6+win98se
 
不会吧,难道真的要完整的写出个例程来你才明白?
唉,说清楚点的给你吧:
下面假设你的FORM name为FORM1(缺省就是这个)
for I :=0 to form1.commponentcount-1 do
begin
if form1.commponents is TButton then
form1.commponents.enabled :=false;
end;

不用写出完整的源程序了吧^_^

 
老大啊。。。确实是这样的啊。。。我又试过了。。。
还是同样的错误提示。我的步骤是这样:在form1上加7个button,然后激活button7的
click事件,
for I :=0 to form1.commponentcount-1 do
begin
if form1.commponents is TButton then
form1.commponents.enabled :=false;
end;
然后就是说声明找不到!!!why?
 
to iamfly:
在delphi5.0中好象不能编译 form1.commponents.enabled :=false;
 
for i:=0 to form1.componentCount-2 do
begin
if Form1.Components is TButton then
(form1.Components as TButton).Enabled :=false;

end;
 
当然不能编译了。你按叶枫写的去做就行了,我不想再重复了:)
 
to 狼牙

你用的
form1.components.enabled:=false;
这条语句是错误的
因为 tcomponents这个类中没有enabled属性

但是因为面向对象语言有多态性可以利用

所以我们可以通过
form1.components as tbutton

tbutton(form1.components)来访问enabled属性

完整代码如下


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;
Button5: TButton;
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button5Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to form1.ComponentCount-1 do
begin
if form1.Components is tbutton then
(form1.Components as tbutton).enabled:=false;
end;
end;

end.




 
我想这个问题也太业余了,如果你学了一年的话请不要再学了,免得浪费时间,下面的方法肯定行
for i:=1 to 5 do
begin
(self.findcomponent('button'+inttostr(i)) as TButton).enabled :=false;
end;


for i:=1 to 5 do
begin
Tbutton(self.findcomponent('button'+inttostr(i))).enabled :=false;
end;
请不要把findcomponent写错!其中只有一个m!
 
建议用findcomponent
 
delphi_lsl说得很对!
 
嘻嘻,谢谢各位啊。
 
后退
顶部