具有在运行时创建的操作的工具按钮
toolbutton with action created at runtime
我在工具栏中使用 Delphi 2009 Toolbuttons 创建,就像这里描述的那样:Create TToolbutton runtime
不同之处在于我也在运行时分配了一个动作。我的代码如下:
Function TSymbolVisWin.MakeButton(BCnt:integer; Act:TAction):integer;
var
TB : TToolButton;
ACnt, Ind: Integer;
begin
TB:=TToolButton.Create(ListBar);
try
with TB {NB} do
begin
Parent:=ListBar;
Action:=act; // here seems to be the difference
Style:=tbsButton;
grouped:=false;
Enabled:=true;
ShowHint:=True;
Tag:=BCnt;
Hint:=Act.Hint;
caption:='';
Wrap:=False;
ImageIndex:=Act.ImageIndex;
// here comes the problem
if ListBar.ButtonCount > 0 then
Left:=ListBar.Buttons[ListBar.ButtonCount-1].Left+tb.Width
else
Left:=0; }
// end of problem
end;
except
end;
当我留下行(标记的问题)时,我看到以下奇怪的行为:
我按下按钮并触发了分配的操作,但左边两个按钮的按钮设置为向下。当我再次按下另一个按钮时,左边的两个按钮按下,前面的按钮起来。
我需要帮助,我不知道原因
亲切的问候
克里斯汀
如评论中所述,当设置了 AutoCheck
操作时,我可以复制您的问题。
您的错误是没有对您问题中链接的问题的公认答案给予足够的重视。答案是 在 设置 Left
属性 之后设置按钮。在对链接答案的评论中也提到了这个问题是问题试图解决的问题的原因(尽管那里有一个不同的问题 - 可能都与索引搞砸有关)。
我在工具栏中使用 Delphi 2009 Toolbuttons 创建,就像这里描述的那样:Create TToolbutton runtime
不同之处在于我也在运行时分配了一个动作。我的代码如下:
Function TSymbolVisWin.MakeButton(BCnt:integer; Act:TAction):integer;
var
TB : TToolButton;
ACnt, Ind: Integer;
begin
TB:=TToolButton.Create(ListBar);
try
with TB {NB} do
begin
Parent:=ListBar;
Action:=act; // here seems to be the difference
Style:=tbsButton;
grouped:=false;
Enabled:=true;
ShowHint:=True;
Tag:=BCnt;
Hint:=Act.Hint;
caption:='';
Wrap:=False;
ImageIndex:=Act.ImageIndex;
// here comes the problem
if ListBar.ButtonCount > 0 then
Left:=ListBar.Buttons[ListBar.ButtonCount-1].Left+tb.Width
else
Left:=0; }
// end of problem
end;
except
end;
当我留下行(标记的问题)时,我看到以下奇怪的行为:
我按下按钮并触发了分配的操作,但左边两个按钮的按钮设置为向下。当我再次按下另一个按钮时,左边的两个按钮按下,前面的按钮起来。
我需要帮助,我不知道原因
亲切的问候
克里斯汀
如评论中所述,当设置了 AutoCheck
操作时,我可以复制您的问题。
您的错误是没有对您问题中链接的问题的公认答案给予足够的重视。答案是 在 设置 Left
属性 之后设置按钮。在对链接答案的评论中也提到了这个问题是问题试图解决的问题的原因(尽管那里有一个不同的问题 - 可能都与索引搞砸有关)。