На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Вставка TToolButton в TToolBar по указанному индексу , Маленькая, но полезная функция
      Вставка TToolButton в TToolBar по указанному индексу

      Дельфийская реализация TToolBar по какой-то причине невероятно бедна, и хотя множество вкусных функций реализовано, они зачем-то спрятаны в private секцию. Это можно исправить helper-ом, но иногда приходится работать с тем, что есть. Вот функция для создания и вставки кнопки по указанному индексу. Идея не моя, нарыта на stackoverflow, но существенно переработана.

      ExpandedWrap disabled
        // 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;


      Примеры:
      ExpandedWrap disabled
          btn := InsertToolButton(ToolBar1, 0); // вставит в начало
          btn := InsertToolButton(ToolBar1, 1); // вставит после первого контрола
          btn := InsertToolButton(ToolBar1, MaxInt); // вставит в конец
      Сообщение отредактировано: Fr0sT -
        Поменял параметр - теперь это желаемый индекс новой кнопки, что намного естественнее

        Добавлено
        Также добавил необязательный параметр, позволяющий добавлять уже созданную кнопку
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0245 ]   [ 16 queries used ]   [ Generated: 28.03.24, 16:31 GMT ]