Модераторы Равиль Зарипов (ZuBy) Опубликовано 29 июля, 2015 Модераторы Поделиться Опубликовано 29 июля, 2015 Здравствуйте! Вопрос в следующем: Почему при клике на TextButton вызывается OnItemClick? Как запретить вызов OnItemClick? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 30 июля, 2015 Автор Модераторы Поделиться Опубликовано 30 июля, 2015 в итоге получилось так ContentView - TListView procedure TForm1.ContentViewItemClickEx(const Sender: TObject; ItemIndex: Integer; const LocalClickPos: TPointF; const ItemObject: TListItemObject); var pMy: TPoint; pItem: TRect; begin // вычисляем прямоугольник, где распологается кнопка pItem.Left := trunc(ContentView.Width - ContentView.ItemAppearanceObjects.ItemObjects.Accessory.WidthWhenVisible - ContentView.ItemAppearanceObjects.ItemObjects.TextButton.WidthWhenVisible) - 12; pItem.Right := pItem.Left + trunc(ContentView.ItemAppearanceObjects.ItemObjects.TextButton.WidthWhenVisible); pItem.Top := trunc((ContentView.ItemAppearance.ItemHeight / 2) - (ContentView.ItemAppearanceObjects.ItemObjects.TextButton.HeightWhenVisible / 2)); pItem.Bottom := pItem.Top + trunc(ContentView.ItemAppearanceObjects.ItemObjects.TextButton.HeightWhenVisible); { смотрим куда тыкаем ShowMessage('click : ' + LocalClickPos.X.ToString + ' ' + LocalClickPos.Y.ToString + #13#10 + 'client: ' + ContentView.Width.ToString + #13#10 + pItem.Left.ToString + ' ' + pItem.Top.ToString + #13#10 + pItem.Right.ToString + ' ' + pItem.Bottom.ToString + #13#10); } pMy.X := trunc(LocalClickPos.X); pMy.Y := trunc(LocalClickPos.Y); if PtInRect(pItem, pMy) then begin ShowMessage('Нажалось))'); end else begin // нажатие на Item, выполняем код тут, не в OnItemClick end; end; стиль вот такой используется enatechno 1 Цитата Ссылка на комментарий
0 walexw Опубликовано 29 марта, 2016 Поделиться Опубликовано 29 марта, 2016 Налетел на те-же грабли. Разные процедуры для OnItemClick и OnButtonClick С OnItemClick никаких проблем, а при клике по кнопке (OnButtonClick) сначала срабатывает OnItemClick а уже затем кнопка. Неужели нет никакого способа развести эти процедуры, кроме как высчитывать попадание пальца (мышки) в Rect кнопки? Цитата Ссылка на комментарий
2 zairkz Опубликовано 29 марта, 2016 Поделиться Опубликовано 29 марта, 2016 33 минуты назад, walexw сказал: Налетел на те-же грабли. Разные процедуры для OnItemClick и OnButtonClick С OnItemClick никаких проблем, а при клике по кнопке (OnButtonClick) сначала срабатывает OnItemClick а уже затем кнопка. Неужели нет никакого способа развести эти процедуры, кроме как высчитывать попадание пальца (мышки) в Rect кнопки? procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable); begin if ItemObject is TListItemTextButton then begin //Bla Bla Bla вообщем сюда перенесите OnButtonClick . end; //Next Bla Bla Bla end; Равиль Зарипов (ZuBy), walexw и Kitty 3 Цитата Ссылка на комментарий
0 beklexx Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 (изменено) У меня вот так работает procedure TFVisit.ListView1ButtonClick(const Sender: TObject; const AItem: TListItem; const AObject: TListItemSimpleControl); begin if AObject.ClassName = 'TListItemTextButton' then begin ........ end; end; Изменено 30 марта, 2016 пользователем beklexx Цитата Ссылка на комментарий
0 beklexx Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 слушайте, а как вставить в сообщение код на паскале ? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 30 марта, 2016 Автор Модераторы Поделиться Опубликовано 30 марта, 2016 1 минуту назад, beklexx сказал: слушайте, а как вставить в сообщение код на паскале ? как понять? Цитата Ссылка на комментарий
0 beklexx Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 ну вот в сообщении... вставка кода, там в списке C CSS SQL и т.д. паскаля нету Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 30 марта, 2016 Автор Модераторы Поделиться Опубликовано 30 марта, 2016 Ярослав отвечал уже в нужной теме, сказал что работает над этим Цитата Ссылка на комментарий
0 beklexx Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 ясно... спасибо Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 (изменено) Приложение десктопное или мобильное? Если мобильное, то все ок работает. кидаешь на форму ListView1 задаешь ему свойства ItemAppearance=ImageListItemBottomDetailRightButton В событиях выбираешь ListView1ButtonClick и туда пишешь код. Вот тестовый пример. При нажатии на элемент строки выдается сообщение и при нажатии на кнопку этого элемента выдается сообщение. Цитата procedure TForm1.ListView1ButtonClick(const Sender: TObject; const AItem: TListItem; const AObject: TListItemSimpleControl); begin ShowMessage('Нажатие по кнопке'); end; procedure TForm1.ListView1Change(Sender: TObject); begin ShowMessage('Нажатие по элементу'); end; Изменено 30 марта, 2016 пользователем AndroidHalfNoob Цитата Ссылка на комментарий
0 Palych Опубликовано 14 декабря, 2016 Поделиться Опубликовано 14 декабря, 2016 Delphi 10.1 Upd2, приложение на FM для Win32 под сенсорный экран планшета. Пишу код в OnButtonClick, код вызывается. Если создаю реакцию на события OnItemClick или OnChange, то код OnButtonClick перестает срабатывать при клике на кнопке. Если вместо них реагирую на OnItemClickEx, то выполняются и оба обработчика. Пл совету выше в OnItemClickEx придется писать так: if not (ItemObject is TListItemTextButton) then begin // реакция на клик по элементу вне кнопки ... end; Это перекрытие обработчиков событий баг или фича FM? Цитата Ссылка на комментарий
0 x11 Опубликовано 5 августа, 2017 Поделиться Опубликовано 5 августа, 2017 В 30.03.2016 в 08:02, Равиль Зарипов (ZuBy) сказал: Ярослав отвечал уже в нужной теме, сказал что работает над этим как продвигается процесс? Цитата Ссылка на комментарий
Вопрос
Равиль Зарипов (ZuBy)
Здравствуйте!
Вопрос в следующем:
Почему при клике на TextButton вызывается OnItemClick?
Как запретить вызов OnItemClick?
Ссылка на комментарий
12 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.