工具按钮,在运行时创建动作

时间:2015-01-31 17:30:27

标签: delphi runtime taction

我使用工具栏中的Delphi 2009工具按钮创建,如下所示: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;

当我离开(明显的问题)行时,我看到跟随奇怪的行为:

我按下按钮并触发分配的操作,但左侧的两个按钮设置为向下。当我再次按下另一个按钮时,按钮向左按下两个按钮,然后按下按钮。

我需要帮助,我不知道原因

亲切的问候

1 个答案:

答案 0 :(得分:1)

如操作设置AutoCheck,我可以复制您的问题,如评论中所述。

你的错误就是不要对你问题中所连问题的接受答案给予足够的重视。在设置Left属性后,答案的按钮是的父级。在链接答案的评论中也提到这是问题试图解决的问题的原因(尽管那里有一个不同的 - 可能两者都与索引搞砸了)。