2015-01-31 4 views
-1

я создаю с Delphi 2009 Toolbuttons в панели инструментов, как он здесь мы проделали: Create TToolbutton runtimeToolButton с действием созданного во время выполнения

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

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; 

Когда я оставляю строки (маркированные проблема), я вижу followin странное поведение:

жму кнопку и назначенная действие обжигают, но кнопка две кнопки left установлен вниз. когда я снова нажимаю другую кнопку, кнопка, оставшаяся две кнопки, спускается, и кнопка перед тем, как встать.

мне нужна помощь, я понятия не имею, по той причине,

Сердечные приветы

Christine

+0

Я не могу дублировать вашу проблему (XE2). Можете ли вы создать новый проект? Если нет, укажите полную программу или шаги, которые помогут дублировать это поведение. –

+0

Есть ли какие-либо 'GroupIndex' для связанных действий? –

+0

Для всех действий установлено: autocheck = true; GroupIndex = 0; Нет ярлыков –

ответ

1

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

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

+0

Спасибо, это работает. Я не осмеливаюсь попросить причину –

+0

@ Честь, пожалуйста. Я не знаю причины. –