Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.235.226.14] |
|
Сообщ.
#1
,
|
|
|
Вставка TToolButton в TToolBar по указанному индексу
Дельфийская реализация TToolBar по какой-то причине невероятно бедна, и хотя множество вкусных функций реализовано, они зачем-то спрятаны в private секцию. Это можно исправить helper-ом, но иногда приходится работать с тем, что есть. Вот функция для создания и вставки кнопки по указанному индексу. Идея не моя, нарыта на stackoverflow, но существенно переработана. // Create new toolbutton and insert it to the given index in the toolbar // InsertAfter is the desired index of a new button // Pass any value >= Tb.ButtonCount (i.e. MaxInt) to add new button to the toolbar end function InsertToolButton(var Tb: TToolBar; InsertIndex: Integer = 0; Button: TToolButton = nil): TToolButton; begin if Button = nil then Result := TToolButton.Create(Tb) else Result := Button; // Some range checks if InsertIndex > Tb.ButtonCount then InsertIndex := Tb.ButtonCount; if InsertIndex < 0 then InsertIndex := 0; // Set button position if InsertIndex = 0 then Result.Left := 0 else Result.Left := Tb.Buttons[InsertIndex - 1].Left + Tb.Buttons[InsertIndex - 1].Width; // Add to toolbar. This MUST be done strictly after position setting, otherwise // terrible bugs occur Result.Parent := Tb; end; Примеры: btn := InsertToolButton(ToolBar1, 0); // вставит в начало btn := InsertToolButton(ToolBar1, 1); // вставит после первого контрола btn := InsertToolButton(ToolBar1, MaxInt); // вставит в конец |
Сообщ.
#2
,
|
|
|
Поменял параметр - теперь это желаемый индекс новой кнопки, что намного естественнее
Добавлено Также добавил необязательный параметр, позволяющий добавлять уже созданную кнопку |