Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TToolbar + иконки + текст


Автор: artemiy 5.6.2007, 12:05
Как сделать так, чтобы на тулбаре на одной из кнопок был только рисунок, а на другой - только текст?

Проблема вот в чем: если я на одну кнопку вешаю иконку, то на кнопке, на которой должен быть только текст - остается пустое место сверху. Кто знает как этого избежать?

З.Ы. Еще хотлось бы узнать как сделать так, чтобы ширина кнопок была разной на одном тулбаре (сейчас если я изменяю ширину одной кнопки, то изменяется и ширина всех остальных...)

Автор: 0LineGate 5.6.2007, 23:36
юзай TImage, TLabel вместо конкретных кнопок, а вместо TToolBar используй TPanel с Align равным alTop

Автор: former 6.6.2007, 16:33
Цитата(0LineGate @  5.6.2007,  23:36 Найти цитируемый пост)
юзай TImage, TLabel вместо конкретных кнопок, а вместо TToolBar используй TPanel с Align равным alTop 


Зачем городушки городить?

artemiy, Используй ActionManager и ActionToolBar. Закрепляешь ImageList1 за ActionManager, создаёшь Action-ы, для требуемых Action-ов задаёшь иконки, переносишь их на ActionToolBar. Далее в Object Inspector-е в свойствах ActionManager-а выбираешь в списке ActionBars свой ActionToolBar у которого открываешь список Items. После этого в Object Inspector-е появятся свойства TActionClients в пункте CaptionOptions которого выбироешь coNone.

Проверено. Работает.

Автор: artemiy 11.6.2007, 11:50
Спасибо, идея хорошая. Но проблема в том, что я использую TControlBar, один из TToolBar-ов должен обладать вышеописанными свойствами. Причем кнопка с текстом имеет стиль tbsDropDown, т.е. это не совсем стандартная кнопка, которую можно реализовать с помощью обычных.

Теперь остается вопрос как все это реализовать...

В принципе можно отказаться от картинки на кнопке, но все равно остается вопрос о том, как сделать так, чтобы ширина каждой кнопки на тулбаре была индивидуальной. В хелпе есть следующее:  "In addition, all tool buttons on the toolbar automatically maintain the same height and width.". Так вот есть ли возможность этого избежать?

Автор: 0LineGate 13.6.2007, 20:25
Цитата(former @ 6.6.2007,  16:33)
Цитата(0LineGate @  5.6.2007,  23:36 Найти цитируемый пост)
юзай TImage, TLabel вместо конкретных кнопок, а вместо TToolBar используй TPanel с Align равным alTop 


Зачем городушки городить?

artemiy, Используй ActionManager и ActionToolBar. Закрепляешь ImageList1 за ActionManager, создаёшь Action-ы, для требуемых Action-ов задаёшь иконки, переносишь их на ActionToolBar. Далее в Object Inspector-е в свойствах ActionManager-а выбираешь в списке ActionBars свой ActionToolBar у которого открываешь список Items. После этого в Object Inspector-е появятся свойства TActionClients в пункте CaptionOptions которого выбироешь coNone.

Проверено. Работает.

и кто из нас городушки городит? smile smile smile

2 artemiy что даёт стиль tbsDropDown?

Автор: artemiy 14.6.2007, 10:52
Цитата(0LineGate @  13.6.2007,  20:25 Найти цитируемый пост)
что даёт стиль tbsDropDown? 

А это кнопка с выпадающим меню (там сбоку появляется стрелочка, по нажатию на которую это меню выпадает)... В принципе ее можно реализовать обычнывми средствами - но это дополнительный геморрой...

Автор: 0LineGate 14.6.2007, 14:26
в чём проблема? в событии OnClick кнопки у которой долна выпадать менюшка пиши
Код

PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);

если надо чтобы по на;атии на кнопку менюшка выпадала с позиции курсора

Код

PopupMenu1.Popup(Form1.Left+Button1.Left+4,Form1.Top+Button1.Top+Button1.Height+29);

а такой код чтобы менюшка выпадала прямо над кнопкой...
 smile 

Автор: artemiy 14.6.2007, 19:00
Это не совсем то, что я хотел. Кнопка со стилем tbsDropDown разделена на 2 части: при нажатии на одну - выпадает список, принажатии на другую - происходит событие onclick. В общем это реализовать не сложно, но зачем же изобретать велосипед?
Хотя мне кажется что именно этим мне и придется заняться :(

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