ich habe ein Problem mit der Zuweisung der Position der Buttons innerhalb einer Toolbar. Einige Buttons werden zur Laufzeit nach Bedarf unsichtbar gemacht, da diese in bestimmten Konfigurationen keinen Sinn ergeben.
Die Reihenfolge der Buttons ist dadurch nicht mehr einheitlich. Der Versuch die Buttons manuell per Code zu sortieren funktioniert nicht. Vielleicht verstehe ich gerade auch den Index der Buttons nicht. Buttons rücken ja nach links, das nächste rück nach .. usw.
Die Tags waren auch schon einheitlich durchnummeriert und auch die Trenner bewegen sich unkontrolliert.
Wie kann man das so lösen, dass die Toolbar.Buttons immer in der definierten Reihenfolge angezeigt werden ?
Code: Alles auswählen
procedure OrderToolButtons (aToolBar: TToolBar);
var
Index : Integer;
btn1, btn2 : TToolButton;
begin
for Index := 0 to aToolBar.ButtonCount -2 do
begin
btn1 := aToolBar.Buttons[Index];
btn2 := aToolBar.Buttons[Index + 1];
if ((btn1.Tag > 0) and (btn1.Tag < btn2.Tag)) then
begin
btn2.Left := btn1.Left -1;
end;
end;
end;
Code: Alles auswählen
// Tags der ToolButtons setzen
ToolButton_1.Tag := 1;
ToolButton_2.Tag := 2;
ToolButton_x1.Tag := 0; // Trenner
ToolButton_3.Tag := 3;
ToolButton_x2.Tag := 0; // Trenner
ToolButton_4.Tag := 4;
ToolButton_x3.Tag := 0; // Trenner
ToolButton_5.Tag := 5;
ToolButton_6.Tag := 6;
ToolButton_x4.Tag := 0; // Trenner
ToolButton_7.Tag := 7; // <- visible = true / false
ToolButton_8.Tag := 8; // <- visible = true / false | tb wandert bei jedem Aufruf um eine Position nach rechts ?
ToolButton_x5.Tag := 0; // Trenner
ToolButton_9.Tag := 9;
begin
OrderToolButtons(Toolbar_1);
end;