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

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

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

DNK
DNK
Студент
Сообщения: 241
[Сообщение #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 - 2018, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.04 сек.
Обратная связь  
Рейтинг@Mail.ru Majordomo.ru - надёжный хостинг