Кнопка с действием, созданным во время выполнения
Я создаю с помощью кнопок 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
имущество. Это также упоминается в комментариях к связанному ответу, чтобы быть причиной самой проблемы, которую пытается решить вопрос (хотя и другая там - вероятно, оба связаны с запутанными индексами).