Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Отображение кнопки на Toolbar-е


Автор: santilaas 3.2.2007, 17:02
Проблема такая: есть форма. На форму положил Toolbar (свойство ShowCaptions= False), на нем создал стандартные кнопки (на них отображаю только картинки) + ПЕРЕД ними (т.е. слева) добавил кнопку SpeedButton (Transparent=False, Flat=True) (объясню почему добавил - дело в том, что стандартные кнопки Toolbar-а всегда одинаковы по свойствам, а мне нужно было сделать ещё одну кнопку, на которой был бы текст с картинкой, а не одна картинка). Для простоты - сокращу описание своей проблемы - на самой форме есть 2 кнопки.
1 кнопка:
Код

Form1.SpeedButton.Visible:= True;

2 кнопка:   
Код

Form1.SpeedButton.Visible:= False;

Соответственно, кнопка SpeedButton должна либо отображаться, либо нет. НО - проблема в том, что когда я делаю её невидимой, то место, занятое под кнопку, остается (т.е. по сути убирается только её заголовок и картинка), а мне нужно, чтобы кнопка вообще была невидимой и кнопки Toolbar-а начинались от левого края, а когда делаю её видимой, чтобы все возвращалось на свои места.
Пожалуйста, помогите разобраться - наверное я чего-то не так делаю?!

Автор: Sunvas 3.2.2007, 21:07
santilaas, есть простое решение проблемы: при скрытии speedbutton-a переноси его в правый конец toolbar-a и все будет симпатично.

Автор: VICTAR 3.2.2007, 22:24
Можно сдвинуть все кнопки:
Код

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to pred(ToolBar1.ButtonCount)do
  ToolBar1.Buttons[i].Left:=ToolBar1.Buttons[i-1].Left;
SpeedButton1.Visible:=false;
end;


а потом восстановить все как было:
Код

procedure TForm1.Button2Click(Sender: TObject);
begin
SpeedButton1.Visible:=true;
SpeedButton1.Left:=0;
end;

Автор: Sunvas 3.2.2007, 22:34
VICTAR, ты фактически немного усложнил мой вариант. Но смысл остался тотже.
Просто нужную кнопку перенести в конец:
Код

speedbutton1.Left:=ToolBar1.Buttons[ToolBar1.ButtonCount-1].Left+ToolBar1.Buttons[ToolBar1.ButtonCount-1].Width

Автор: santilaas 4.2.2007, 16:16
Sunvas, VICTAR , спасибо Вам за помощь - то, что надо. (+1) каждому.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)