Перейти к содержанию
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 эмодзи.

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

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

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

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