Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
vasilius

Кнопка с выпадающим меню

Вопрос

Здравствуйте

Туплю видимо : не могу найти как сделать кнопку с выпадающим меню

При нажатии ЛКМ на кнопку хочется чтобы появлялось меню

Есть ли такой стандартный контрол.  Перед тем как извращатся решил уточнить, чтобы не создавать велосипед

Заранее спасибо

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Добрый день. Ну, например, так:

procedure TMainForm.ButtonClick(Sender: TObject);
begin
    PopupMenu.Popup(Screen.MousePos.X, Screen.MousePos.Y);
end;


Дополню нехитрый код комментарием: не видел в FMX кнопки с такой вот стрелочкой справа для вызова выпадающего меню. Была такая в VCL с отдельным свойством DropdownMenu. Может быть, плохо искал. Поэтому я, недолго думая, сделал у себя вызов меню по клику на саму кнопку. Думаю, что в desktop-версии вполне допустимо.

Изменено пользователем Andrey Yakovlev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Здравствуйте

Спасибо. Это решение имеет право на жизнь , хоть и не очевидное (само решение)

остановился на таком варианте, по данному предложенному варианту:

  TPointF pos = TPointF(0, btnBackup->Height + 1);
  pos = btnBackup->LocalToAbsolute(pos);
  pos = Screen->ActiveForm->ClientToScreen(pos);
  pmenBackup->Popup(pos.X, pos.Y);
 

Если есть еще варианты - был бы рад 

 

Спасибо

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну а что, вполне себе красиво. Я даже себе утащил )

А ClientToScreen можно и без обращения к Screen->ActiveForm вызвать, вы же и так в методе класса формы находитесь, будет на строчку короче

pos = ClientToScreen(btnBackup->LocalToAbsolute(pos));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

ну для форума важна же читабельность 

так-то и в одну строку можно уложить

  TPointF pos = ClientToScreen(btnBackup->LocalToAbsolute(TPointF(0, btnBackup->Height + 1)));
  pmenBackup->Popup(pos.X, pos.Y);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...