Имплементација на клик ставке / двоструки клик за ТЛистВиев

click fraud protection

Делфи ТЛистВиев контрола приказује листу ставки у колонама са заглављама и под-ставкама или вертикално или хоризонтално, са малим или великим иконама.

Као и већина Делпхи контрола, ТЛистВиев излаже ОнЦлицк и ОнДблЦлицк (ОнДоублеЦлицк) догађаји.

Нажалост, ако желите да знате на који је артикл кликнуто или двоструко кликано, не можете једноставно да обрађујете догађаје ОнЦлицк / ОнДблЦлицк да бисте добили ставку коју сте кликнули.

Догађај ОнЦлицк (ОнДблЦлицк) за ТЛистВиев покреће се кад год корисник кликне на контролу - то је сваки пут када се догоди „клик“ негде унутар клијентског дела контроле.

Корисник може кликнути унутар приказа листе, али "пропустити" било коју ставку. Штавише, будући да приказ листе може да промени свој приказ у зависности од ВиевСтиле својства, корисника можда сте кликнули на ставку, на наслов ставке, на икону ставке, „нигде“, на икону стања ставке, итд.

Напомена: Својство ВиевСтиле одређује како се ставке приказују у приказу листе: ставке се могу приказати као скуп покретних икона или као ступац текста.

instagram viewer

ЛистВиев. Кликните на ставку Кликните и листа Преглед. На ставку Двокликните

Да бисте могли да пронађете кликану ставку (ако постоји једна) када се покрене догађај ОнЦлицк за приказ листе, морате да одредите шта елементи приказа листе леже испод тачке задате параметрима Кс и И - то је локација миша у тренутку "клик".

ТЛистиевови ГетХитТестИнфоАт функција враћа информације о специфицираној тачки у пољу клијента у приказу листе.

Да бисте били сигурни да је ставка кликнута (или двоструко кликнута), морате позвати ГетХитТестИнфоАт и реаговати само ако се догађај кликања догодио на стварној ставци.

Ево примера имплементације ОнДблЦлицк догађаја ЛистВиев1:

// обрађује ЛистВиев1 на Двоструки кликпроцедура ТФорм.ЛистВиев1ДблЦлицк(Пошиљалац: ТОбјецт);
вар
хтс: ТХитТестс;
хт: ТХитТест;
схт: низ;
ЛистВиевЦурсосПос: ТПоинт;
селецтедИтем: ТЛистИтем;
започети
// положај курсора миша повезан са ЛистВиев
ЛистВиевЦурсосПос: = ЛистВиев1.СцреенТоЦлиент (Миш). ЦурсорПос);
// дупли клик где?
хтс: = ЛистВиев1.ГетХитТестИнфоАт (ЛистВиевЦурсосПос. Кс, ЛистВиевЦурсосПос. И);
// хитни тест "дебуг"
Натпис: = '';
за хт ин хтс урадити
започети
схт: = ГетЕнумНаме (ТипеИнфо (ТХитТест), Интегер (хт));
Опис: = Формат ('% с% с |', [наслов, схт]);
крај;
// пронађите ставку с два клика
ако хтс <= [хтОнИцон, хтОнИтем, хтОнЛабел, хтОнСтатеИцон] онда
започети
селецтедИтем: = ЛистВиев1.Селецтед;
// урадите нешто са двоструко кликом ставке!
Натпис: = Формат ('ДблЦлцкед:% с', [селецтедИтем. Наслов]) ;
крај;
крај;

У програму за обраду догађаја ОнДблЦлицк (или ОнЦлицк), прочитајте функцију ГетХитТестИнфоАт тако што ћете јој дати локацију миша "унутар" контроле. Да бисте добили локацију миша повезано са приказом листе, функција СцреенТоЦлиент користи се за претварање тачке (миша Кс и И) у координате екрана у локалне, или клијентске области, координате.

ГетХитТестИнфоАт враћа вредност од ТХитТестс тип. ТХитТестс је скуп ТХитТест набројане вредности.

Тхе ТХитТест набрајање Вредности са њиховим описом су:

  • хтАбове - изнад подручја клијента.
  • хтБелов - испод подручја клијента.
  • хтНовхере - унутар контроле, али не на предмету.
  • хтОнИтем - на ставку, њен текст или њену битну мапу.
  • хтОнБуттон - на дугме.
  • хтОнИцон - на икони.
  • хтОнИндент - на разведеном подручју предмета.
  • хтОнЛабел - на етикети.
  • хтОнРигхт - на десној страни предмета.
  • хтОнСтатеИцон - на икони стања или битмапу повезаном са ставком.
  • хтТоЛефт - лево од подручја клијента.
  • хтТоРигхт - десно од подручја клијента.

Ако је резултат позива ГетХитТестИнфоАт а подгрупа (Делпхи сетови!) од [хтОнИцон, хтОнИтем, хтОнЛабел, хтОнСтатеИцон] можете бити сигурни да је корисник кликнуо на ставку (или на икону / икону стања).

На крају, ако је горе наведено тачно, прочитајте текст Изабрано својство приказа листе, враћа прву одабрану ставку (ако се може изабрати више) у приказу листе. Урадите нешто са кликом / двоструким кликом / одабраном ставком ...

Обавезно преузмите цео изворни код да бисте га истражили и научили усвајањем.

instagram story viewer