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

ListBoxItem и OnGesture


x11

Вопрос

У ListBoxItem нужно реализовать вызов контекстного меню.

На ListBoxItem лежит ImagesViwer с картинкой и у ImagesViwer свойство HitTest отключено.

 

почитал справку http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Gestures_in_FireMonkey

сделал как описано:

 

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.Touch.GestureManager := GestureManager1;
  item.Touch.InteractiveGestures := [TInteractiveGesture.LongTap, TInteractiveGesture.DoubleTap];

  item.OnGesture := ListBoxItemGesture;

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

  item.SetFocus;
end;


procedure TfmEditObject.ListBoxItemGesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
Var
 s: string;
begin
  if GestureToIdent(EventInfo.GestureID, s) then
    ShowMessage( S );

  if EventInfo.GestureID = igiLongTap then
    ShowMessage( Sender.ClassName );

  Handled := True;
end;

 

Ничего не происходит. На на андроид устройстве, ни на винде.

 

 

И правильно ли я понял, что для LongTap, т.е. для InteractiveGestures не нужен GestureManager?

 

Screenshot_74.png

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

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

  • 0
5 минут назад, x11 сказал:

И правильно ли я понял, что для LongTap, т.е. для InteractiveGestures не нужен GestureManager?

 

In order to use Interactive Gestures such as zoom and rotate in a component, you do not need to associate the component with a Gesture Manager.

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Gesturing_Overview

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

Здесь

https://stackoverflow.com/questions/35921419/firemonkey-how-to-add-longtap-gesture-to-runtime-made-listboxitems/35938554

подсказывают, что

Цитата

Gestures dont work with controls inside ScrollBox and descendants (I don't know, why). You should use ListBox.Touch, ListBox.OnGesture and analyze Selected property.

 

Сделал для ListBox. Рвботает, но только на Андроиде.

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

у ListBoxItem'а Hittest = False. Если выставить True - то жесты заработают для итема. Но тогда возможны проблемы со скороллом. Поэтому лучше жест обрабатывать в ListBox'е. А там уже по координатам жеста можно определить, над каким итемом происходит LongTap

Ссылка на комментарий
  • 0
1 час назад, sinuke сказал:

у ListBoxItem'а Hittest = False. Если выставить True - то жесты заработают для итема. Но тогда возможны проблемы со скороллом.

да, поэтому отключено

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

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

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

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

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

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

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

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

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

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