Перейти к содержанию
Fire Monkey от А до Я
  • 0

Не всплывает меню у TListBoxItem


x11

Вопрос

Процедура добавления Item

 

procedure TfmEditObject.AddPhoto(Image: TBitmap);
Var
  item: TListBoxItem;
  imageV: TImageViewer;
begin
  item := TListBoxItem.Create(lbPhotos);
  item.parent := lbPhotos;
  item.text   := '';
  item.Width  := lbPhotos.Width;
  item.PopupMenu := PopupMenu1;

  imageV := TImageViewer.Create(lbPhotos);
  imageV.HitTest := False;
  imageV.Parent  := item;
  imageV.Align   := TAlignLayout.Client;
  imageV.Bitmap.Assign(image);

  item.SetFocus;
end;

У popupmenu есть 2 пункта, привязанных к Action.

 

Gestures срабатывает на "long tap"

procedure TfmEditObject.lbPhotosGesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
  c: IControl;
  ListBox: TListBox;
  lbxPoint: TPointF;
  ListBoxItem: TListBoxItem;
begin
  if EventInfo.GestureID = igiLongTap then
    if (sender is TListBox) and assigned(TListBox(sender).Selected) then
    begin
      c := ObjectAtPoint(EventInfo.Location);
      if Assigned(c) then
        if Assigned(c.GetObject) then
          if c.GetObject is TListBox then
            begin
              ListBox := TListBox(c.GetObject);
              lbxPoint := ListBox.AbsoluteToLocal(EventInfo.Location);

              ListBoxItem := ListBox.ItemByPoint(lbxPoint.X, lbxPoint.Y);
              if Assigned(ListBoxItem) then
                PopupMenu1.Popup(lbxPoint.X, lbxPoint.Y);
              Handled := True;
            end;
    end;

end;

 

Ставил точку останова, видно, что до строки "PopupMenu1.Popup(lbxPoint.X, lbxPoint.Y);" доходит.

Если программа работает на Windows, то меню отображается по правой кнопке мышки, а на андроид устройстве меню не отображается по Long Tap.

 

Как видно из кода, то меню прикручивается к ListBoxItem, а непосредственно к TListBox меню прикрутил в дизайне.

Изменено пользователем x11
Ссылка на комментарий

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

  • 0

А PopupMenu вообще в принципе на Андройде показывается?

Тут нужно самому рисовать менюшку. Например вот как-то так https://community.embarcadero.com/blogs/entry/creating-an-overflow-menu-on-android-463

Ссылка на комментарий
  • 0

Сделал. Но на Андроиде такое впечатление, что в примере не работает "OverflowMenu.RealignContent", т.к. ListBox показывает только один Item из двух, второе еле-еле выглядывает. А на винде всё сравнительно красиво.

Ссылка на комментарий

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

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

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

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

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

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

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

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

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