Delphi 是否可以使用标签访问TButton?

Delphi 是否可以使用标签访问TButton?,delphi,Delphi,我希望使用tag访问TButton。 可能吗 例如,我希望将TButton button1的标题标记3设置为“aaa”, 我知道我可以用 按钮1.标题:='aaa' 但我希望使用标记“3”访问tbutton并设置字符串值“aaa” 欢迎评论 谢谢 interdev现在,标记属性的大小与指针的大小相同,因此您可以这样做,但您需要描述更多您想要做的事情 我不确定这种情况是否会继续发展到64位Delphi,但我认为情况也是如此 编辑:是的,TComponent.Tag在将来的版本中应该是NativeI

我希望使用tag访问TButton。 可能吗

例如,我希望将TButton button1的标题标记3设置为“aaa”, 我知道我可以用

按钮1.标题:='aaa'

但我希望使用标记“3”访问tbutton并设置字符串值“aaa”

欢迎评论

谢谢


interdev

现在,标记属性的大小与指针的大小相同,因此您可以这样做,但您需要描述更多您想要做的事情

我不确定这种情况是否会继续发展到64位Delphi,但我认为情况也是如此


编辑:是的,TComponent.Tag在将来的版本中应该是NativeInt。参考资料:,

好吧,现在标记属性的大小与指针的大小相同,所以您可以,但是您需要描述更多您想要做的事情

我不确定这种情况是否会继续发展到64位Delphi,但我认为情况也是如此


编辑:是的,TComponent.Tag在将来的版本中应该是NativeInt。参考资料:,

没有直接的方法

 ButtonByTag(3).Caption := 'aaa';
您可以在表单的组件中搜索标记为3的内容:

 var C: TComponent;

 for C in Self.Components do
    if C is TCustomButton then
      if C.Tag = 3 then
        (C as TCustomButton).Caption := 'aaa'

但请注意,可能有很多组件具有相同的标记,但不能保证它们是唯一的。

没有直接的方法

 ButtonByTag(3).Caption := 'aaa';
您可以在表单的组件中搜索标记为3的内容:

 var C: TComponent;

 for C in Self.Components do
    if C is TCustomButton then
      if C.Tag = 3 then
        (C as TCustomButton).Caption := 'aaa'

但请注意,可能有很多组件具有相同的标签,但不能保证其唯一性。

我认为这应该可以:

procedure TForm1.SetCaption(iTag: Integer; mCaption: String);
var
  i: Integer;
begin
  for i:= 0 to controlcount-1 do
    if controls[i] is TButton then
      if TButton(controls[i]).Tag = iTag then
        TButton(controls[i]).Caption := mCaption;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetCaption(3,'aaa');
end;

我认为这应该奏效:

procedure TForm1.SetCaption(iTag: Integer; mCaption: String);
var
  i: Integer;
begin
  for i:= 0 to controlcount-1 do
    if controls[i] is TButton then
      if TButton(controls[i]).Tag = iTag then
        TButton(controls[i]).Caption := mCaption;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetCaption(3,'aaa');
end;



在今年巴西的一次会议上,David I.说明年将有一个64位MAC编译器-如果代码是为64位platform.MAC编译器编译的,那么标记属性将是一个64大整数?是为苹果的MAC吗?@user262325-是的,计划为Delphi制作一个MAC编译器。在今年巴西的一次会议上,David I.说明年将有一个64位MAC编译器-如果代码是为64位platform.MAC编译器编译的,则标记属性将是一个64大整数?是为苹果的MAC吗?@user262325-是的,计划为Delphi制作一个MAC编译器。请参阅“您必须更明确地说明您要执行的操作”。@user262325-您是否将标记设置为唯一的,或者您是否要为多个按钮设置多个组件的标题?您必须更明确地说明您要执行的操作。@user262325-您是否将标记设置为唯一的或唯一的您想为多个组件设置标题,并为多个按钮设置相同的标记吗?Maaan我总是迟到。我给出了同样的答案。此外,按钮之间的标签必须是唯一的,否则,您将拥有带有特定标签的最后一个按钮。对不起,收回,Break如何;从loop@daemon:如果user262325有多个带有相同标签的按钮?我总是迟到。我给出了同样的答案。此外,按钮之间的标签必须是唯一的,否则,您将拥有带有特定标签的最后一个按钮。对不起,收回,Break如何;从loop@daemon:如果user262325有多个带有相同标签的按钮?很好-我从来不知道self.components中的for C;我总是为I:=0做ControlCount或ComponentCount,Break呢;从循环中?@M申克尔-从D2005@daemon_x:我假设OP想要所有带标签3的按钮。如果他只想要第一个,那么是的,休息才是出路。@Larry Lustig-谁知道呢?他可能对答案很满意,所以这可能是下一个不被接受的解决方案:很好——我从来不知道self.components中的for C;我总是为I:=0做ControlCount或ComponentCount,Break呢;从循环中?@M申克尔-从D2005@daemon_x:我假设OP想要所有带标签3的按钮。如果他只想要第一个,那么是的,休息才是出路。@Larry Lustig-谁知道呢?他可能对答案很满意,所以这可能是下一个不被接受的解决方案:休息怎么样;从循环?最初的问题没有指定多个按钮是否共享同一标签。。。提前休息可能是错误的。你的论点是+1。我还想说几点,因为ads减少了:Pto是一个粘滞者,你可以给参数const type:what about Break;从循环?最初的问题没有指定多个按钮是否共享同一标签。。。提前休息可能是错误的。你的论点是+1。我还想了解一些要点,因为ads减少了:Pto是一个坚持者,您可以给参数const type: