vasilius Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Здравствуйте Туплю видимо : не могу найти как сделать кнопку с выпадающим меню При нажатии ЛКМ на кнопку хочется чтобы появлялось меню Есть ли такой стандартный контрол. Перед тем как извращатся решил уточнить, чтобы не создавать велосипед Заранее спасибо Цитата Ссылка на комментарий
0 Andrey Yakovlev Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 (изменено) Добрый день. Ну, например, так: procedure TMainForm.ButtonClick(Sender: TObject); begin PopupMenu.Popup(Screen.MousePos.X, Screen.MousePos.Y); end; Дополню нехитрый код комментарием: не видел в FMX кнопки с такой вот стрелочкой справа для вызова выпадающего меню. Была такая в VCL с отдельным свойством DropdownMenu. Может быть, плохо искал. Поэтому я, недолго думая, сделал у себя вызов меню по клику на саму кнопку. Думаю, что в desktop-версии вполне допустимо. Изменено 18 января, 2019 пользователем Andrey Yakovlev Цитата Ссылка на комментарий
0 vasilius Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 (изменено) Здравствуйте Спасибо. Это решение имеет право на жизнь , хоть и не очевидное (само решение) остановился на таком варианте, по данному предложенному варианту: TPointF pos = TPointF(0, btnBackup->Height + 1); pos = btnBackup->LocalToAbsolute(pos); pos = Screen->ActiveForm->ClientToScreen(pos); pmenBackup->Popup(pos.X, pos.Y); Если есть еще варианты - был бы рад Спасибо Изменено 18 января, 2019 пользователем vasilius Andrey Yakovlev 1 Цитата Ссылка на комментарий
0 Andrey Yakovlev Опубликовано 19 января, 2019 Поделиться Опубликовано 19 января, 2019 Ну а что, вполне себе красиво. Я даже себе утащил ) А ClientToScreen можно и без обращения к Screen->ActiveForm вызвать, вы же и так в методе класса формы находитесь, будет на строчку короче pos = ClientToScreen(btnBackup->LocalToAbsolute(pos)); Цитата Ссылка на комментарий
0 vasilius Опубликовано 19 января, 2019 Автор Поделиться Опубликовано 19 января, 2019 ну для форума важна же читабельность так-то и в одну строку можно уложить TPointF pos = ClientToScreen(btnBackup->LocalToAbsolute(TPointF(0, btnBackup->Height + 1))); pmenBackup->Popup(pos.X, pos.Y); Цитата Ссылка на комментарий
0 Andrey Yakovlev Опубликовано 20 января, 2019 Поделиться Опубликовано 20 января, 2019 Да, согласен с вами. Цитата Ссылка на комментарий
Вопрос
vasilius
Здравствуйте
Туплю видимо : не могу найти как сделать кнопку с выпадающим меню
При нажатии ЛКМ на кнопку хочется чтобы появлялось меню
Есть ли такой стандартный контрол. Перед тем как извращатся решил уточнить, чтобы не создавать велосипед
Заранее спасибо
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.