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

Лидеры

Популярный контент

Показан контент с высокой репутацией 20.02.2014 в Сообщения

  1. Добрый день, В событии MouseDown у TListBoxItem ищем в стиле итема объект изображения. Для итема картинка имеет название 'icon'. Определяем координаты мыши в координатах формы (Абсолютные координаты). На случай отступов и произвольного размещения изображения. Конвертируем абсолютные координаты в локальные координаты изображения. Если картинка содержит координаты мыши, значит нажали на картинку. Delphi: procedure TForm6.ListBoxItem1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); var Item: TListBoxItem; StyleObject: TFmxObject; StyleIcon: TControl; LocalMousePos: TPointF; AbsoluteMousePos: TPointF; begin if Sender is TListBoxItem then begin Item := TListBoxItem(Sender); LocalMousePos := TPointF.Create(X, Y); AbsoluteMousePos := Item.LocalToAbsolute(LocalMousePos); // Ищем объект стиля - картинка. Лучше закешировать один раз, избежав постоянный поиск картинки StyleObject := Item.FindStyleResource('icon'); if (StyleObject <> nil) and (StyleObject is TControl) then begin StyleIcon := TControl(StyleObject); // Координаты в локальной системе координат картинки LocalMousePos := StyleIcon.AbsoluteToLocal(AbsoluteMousePos); if StyleIcon.LocalRect.Contains(LocalMousePos) then ShowMessage('Click on Image'); end; end; end; Builder C++: void __fastcall TForm4::ListBoxItem1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y) { TListBoxItem *item = dynamic_cast<TListBoxItem*>(Sender); if (item != 0){ TPointF localMousePos(X, Y); TPointF absoluteMousePos = item->LocalToAbsolute(localMousePos); // Ищем объект стиля - картинка. Лучше закешировать один раз, избежав постоянный поиск картинки TFmxObject *styleObject; styleObject = item->FindStyleResource("icon"); if (styleObject != NULL) { TControl *styleIcon = dynamic_cast<TControl*>(styleObject); // Координаты в локальной системе координат картинки localMousePos = styleIcon->AbsoluteToLocal(absoluteMousePos); if (styleIcon->LocalRect.Contains(localMousePos)) ShowMessage("Click on Image"); } } }
    2 балла
  2. Вот спасибо. Знал как получить координаты нажатия, но не мог понять как найти картинку в ListBoxItem'е. Оказывается нужно было через стиль искать... p.s. У меня lvl-up по изучению firemonkey
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...