如何启用多个位按钮?

我想知道如何通过代码为每个按钮启用10个​​位按钮,而每个按钮均不带有“ bitbtn1.enable:= true”。

我尝试了此方法,但是它不起作用:

for a:= 1 to 10 do
  begin
   bitbtn+inttostr(a).enabled:=true; 

   end;

如何解决此问题,或者还有另一种方法?

谢谢

iCMS 回答:如何启用多个位按钮?

有很多选择。

如果按钮都具有相同的父控件,并且您要调整此父对象的 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。因为它将更快,更简单。

本文链接:https://www.f2er.com/2205031.html

大家都在问