Кнопка с действием, созданным во время выполнения

Я создаю с помощью кнопок Delphi 2009 Toolbar на панели инструментов, как описано здесь: Создание среды выполнения TToolbutton

Разница в том, что я назначаю действие также во время выполнения. Мой код выглядит следующим образом:

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 ответ

Решение

Я могу продублировать вашу проблему, когда действия AutoCheck установить, как указано в комментариях.

Ваша ошибка заключается в том, что вы не уделяете достаточного внимания принятому ответу на вопрос, связанный с вашим вопросом. В ответ на это после добавления Left имущество. Это также упоминается в комментариях к связанному ответу, чтобы быть причиной самой проблемы, которую пытается решить вопрос (хотя и другая там - вероятно, оба связаны с запутанными индексами).

Другие вопросы по тегам