На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania 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 -
      Codero ergo sum
      // Программирую — значит, существую
        Поменял параметр - теперь это желаемый индекс новой кнопки, что намного естественнее

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


        Рейтинг@Mail.ru
        [ Script Execution time: 0,0624 ]   [ 15 queries used ]   [ Generated: 21.08.19, 13:41 GMT ]