我想知道如何通过代码为每个按钮启用10个位按钮,而每个按钮均不带有“ bitbtn1.enable:= true”。
我尝试了此方法,但是它不起作用:
for a:= 1 to 10 do
begin
bitbtn+inttostr(a).enabled:=true;
end;
如何解决此问题,或者还有另一种方法?
谢谢
我想知道如何通过代码为每个按钮启用10个位按钮,而每个按钮均不带有“ bitbtn1.enable:= true”。
我尝试了此方法,但是它不起作用:
for a:= 1 to 10 do
begin
bitbtn+inttostr(a).enabled:=true;
end;
如何解决此问题,或者还有另一种方法?
谢谢
有很多选择。
如果按钮都具有相同的父控件,并且您要调整此父对象的 all TBitBtn
子控件,则可以简单地遍历父控件的子控件:
var
i: Integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i] is TBitBtn then
TBitBtn(Controls[i]).Enabled := True;
(在这种情况下,假设父级为Self
,前提是它是存在的。例如,这可能是表单类中的方法。明确地,这是
for i := 0 to Self.ControlCount - 1 do
if Self.Controls[i] is TBitBtn then
TBitBtn(Self.Controls[i]).Enabled := True;
如果父母是Panel1
,则您这样做
for i := 0 to Panel1.ControlCount - 1 do
if Panel1.Controls[i] is TBitBtn then
TBitBtn(Panel1.Controls[i]).Enabled := True;
)
如果您只想调整其中一些,则可以给它们一个Tag = 1
,以区别于其他位按钮:
var
i: Integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i] is TBitBtn then
if TBitBtn(Controls[i]).Tag = 1 then
TBitBtn(Controls[i]).Enabled := True;
如果他们并非都拥有相同的父母,那将更加棘手。一种选择是在应用程序启动时使用所有按钮创建一个数组(例如,表单类的私有字段):
private
FButtons: TArray<TBitBtn>;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FButtons := [BitBtn1,BitBtn2,BitBtn3];
end;
然后,您可以简单地对此进行迭代:
var
Btn: TBitBtn;
begin
for Btn in FButtons do
Btn.Enabled := True;
,
您不能bitbtn+inttostr(a).enabled:=true
执行此操作,但是您可以执行FindComponent('bitbtn'+inttostr(a)).enabled := true
。
尽管我确实建议您将它们全部放入面板中并设置panel.enabled := true
。因为它将更快,更简单。