Логин:     Забыли пароль?
 
Пароль:   Регистрация

Форум / Программирование - Вставка ToolButton в произвольное место в наследованной форме. Ахтунг!!!  

Вставка ToolButton в произвольное место в наследованной форме. Ахтунг!!!

DNK
DNK
Студент
Сообщения: 242
[Сообщение #1] 1 сентября 2011, 09:22
Имеем какую-либо форму с ToolBar.

Исходная форма

DFM-секция выглядит так:
  object ToolBar1: TToolBar
    Left = 0
    Top = 0
    Width = 313
    Height = 38
    ButtonHeight = 30
    ButtonWidth = 31
    Caption = 'ToolBar1'
    Images = ImageList1
    TabOrder = 0
    object ToolButton1: TToolButton
      Left = 0
      Top = 2
      Caption = 'ToolButton1'
      ImageIndex = 0
    end
    object ToolButton2: TToolButton
      Left = 31
      Top = 2
      Caption = 'ToolButton2'
      ImageIndex = 1
    end
    object ToolButton3: TToolButton
      Left = 62
      Top = 2
      Width = 8
      Caption = 'ToolButton3'
      ImageIndex = 2
      Style = tbsSeparator
    end
    object ToolButton4: TToolButton
      Left = 70
      Top = 2
      Caption = 'ToolButton4'
      ImageIndex = 2
    end
  end

Жизнь заставила создать наследика этой формы, чтобы добавить кнопку к какой-то группе.

Наследованная форма

DFM-секция вроде тоже никаких нареканий не вызывает:
  inherited ToolBar1: TToolBar
    object ToolButton5: TToolButton [1]
      Left = 31
      Top = 2
      Caption = 'ToolButton5'
      ImageIndex = 4
    end
    inherited ToolButton2: TToolButton
      Left = 62
    end
    inherited ToolButton3: TToolButton
      Left = 93
    end
    inherited ToolButton4: TToolButton
      Left = 101
    end
  end

Однако при запуске нас ждет неприятный сюрприз. Кнопка "убегает" в конец панели.

Результат

Более того, при последующем открытии сохраненного проекта портится и сам dfm-файл:
  inherited ToolBar1: TToolBar
    object ToolButton5: TToolButton
      Left = 101
      Top = 2
      Caption = 'ToolButton5'
      ImageIndex = 4
    end
  end

Единственное решение, которое я нашел, плюнуть на dfm и выставлять позицию кнопок кодом при создании формы.

procedure TForm2.FormCreate(Sender: TObject);
begin
  inherited;
 
  ToolButton5.Left := ToolBar1.Buttons[1].Left;
end;

"Digital Networked Knight"
Ерёмин А.А.
Ерёмин А.А.
*Администратор
Сообщения: 435
[Сообщение #2] 21 сентября 2011, 16:59
Когда-то мучался с чем-то подобным. Помню, что с Align тоже подобное бывает — например |1|2|…, оба alLeft. Скрываем 1, потом снова показываем, а он уже справа от 2. Вроде бы так.


Всего сообщений: 2 (сейчас показаны: с 1 по 2)

Перейти в раздел:


 © 2004 - 2025, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.03 сек.
Обратная связь