Этот пост пишу для закрепления своих навыков работы с Ribbon в Delphi. Когда пишешь, делаешь – запоминаешь. Первоначально читал статьи Влада Баженова – очень хорошо написано. В принципе, наверное, это лучшее, что есть в сети по этой теме. Но при повторении его первого шага у меня возник нюанс, о котором не написано в той статье. Вот, что у нас получится в конце
Итак, начнем с размещения компонентов на форме
TActionManager
TImageList
И! Внимание,только после того как добавили TActionManager – добавляем TRibbon
Если только включили Delphi, добавили сначала TRibbon, а потом TActionManager, то может получиться такая картинка.
Все попытки растянуть, изменить высоту не удавались.Помогало только добавление TActionManager, прописывание его в свойствах Ribbon+перезагрузка проекта. Не знаю, что это – глюк или так запрограммировано, но это то, с чем я столкнулся.
Если добавили TActionManager – потом TRibbon – то всё работало корректно.
В общем, суть в том, что нужно добавить сначала TActionManager, так как TRibbon работает с ним в паре. И при добавлении в свойстве ActionManager у Ribbon мы увидим ActionManager1.
Создание вкладки
После добавления видим такую картину
Создание группы на вкладке
Вот что у нас получится в результате
Создание действия SayHello
Далее 2 раза кликаем на SayHello в менеджере действий и прописываем ему сам код действия
1 2 3 4 |
procedure TForm.SayHelloExecute(Sender: TObject); begin showmessage('Saying you Hello'); end; |
Добавление изображения к кнопке
В ImageList1 изменяем свойства Width и Height в 32 и 32.
Добавляем изображение в ImageList1.
В ActionManager в свойстве Images отметим ImageList1.
2 раза кликаем на ActionManager
Выбираем SayHello
В Object Inspector находим свойство ImageIndex1, поставим его соответственно индексу в ImageList1.
В результате должно получиться примерно так
Перетаскивание действия на Ribbon
В результате получится такая картина
Увеличение кнопки
Теперь нам нужно поправить размер кнопки
После чего, наблюдаем такой результат
Далее компилируем и проверяем результат
Добавление кнопки SayGoodBye
Теперь добавим 2 кнопку по аналогии с первой.
Добавление RadioButton
Добавим в ActionManager 2 действия
Пропишем их обработчики аналогично (2-й клик на SayYes и получаем шаблон для обработчика)
1 2 3 4 5 6 7 8 9 10 11 |
procedure TForm2.SayNoExecute(Sender: TObject); begin Showmessage('SayNo'); SayNo.Checked := true; end; procedure TForm2.SayYesExecute(Sender: TObject); begin showmessage('SayYes'); SayYes.Checked := true; end; |
Перетащим их на нашу группу в рибоне
Теперь изменим их тип на Radiobutton
Далее выбираем SayYes в ActionManager и ставим groupIndex=1, аналогично у SayNo в ActionManager. Чтобы радио-кнопки находились в 1 группе и в 1 момент времени была нажата только одна. Для этого достаточно поставить Groupindex в одинаковое значение, не равное нулю.
Скомпилируем и проверим работу
В принципе, мы добились результата, который планировали в начале. Осталось только переименовать вкладку и группу, но с этим, думаю Вы справитесь. Самые простые вещи мы сделали, дальше по аналогии. Можно создавать другие вкладки и группы на них. Добавлять в группы через ActionManager какие-то действия, оформлять их в виде кнопок, радиокнопок, списков и так далее.