Az elem kattintással történő / dupla kattintással történő végrehajtása a TListView programhoz

click fraud protection

Delphi A TListView vezérlőelem megjeleníti az elemek listáját oszlopokban oszlopfejlécekkel és alelemekkel, vagy függőlegesen vagy vízszintesen, kis vagy nagy ikonokkal.

A legtöbb Delphi vezérlőhöz hasonlóan, a TListView kiteszi a Kattintásra és ondblclick (OnDoubleClick) események.

Sajnos, ha tudnia kell, hogy melyik elemre kattintott vagy duplán kattintott, akkor nem egyszerűen kezelheti az OnClick / OnDblClick eseményeket a kattintott elem megszerzéséhez.

A TListView OnClick (OnDblClick) eseményét akkor indítják el, amikor a felhasználó rákattint a vezérlőre - azaz amikor a "kattintás" megtörténik. valahol a vezérlés kliens területén belül.

A felhasználó kattinthat a lista nézetén, de "hiányozhat" bármelyik elemről. Mi több, mivel a listanézet a ViewStyle tulajdonságtól, a felhasználótól függően megváltoztathatja a megjelenítését esetleg kattintott egy elemre, egy elem feliratra, egy elem ikonra, "sehol", egy elem állapot ikonjára, stb.

Megjegyzés: A ViewStyle tulajdonság határozza meg, hogy az elemek hogyan jelenjenek meg a listanézetben: az elemek mozgatható ikonkészletként vagy szöveg oszlopként jeleníthetők meg.

instagram viewer

Lista nézet. Az elemnél kattintson a & ListView elemre. Az elem dupla kattintással

Annak érdekében, hogy megtalálhassa a kattintott elemet (ha van ilyen), amikor a listanézet OnClick eseményét elindítják, meg kell határoznia, hogy a listanézet elemei az X és Y paraméterek által meghatározott pont alatt helyezkednek el, vagyis az egér helyzete a "Click".

A TListiew's GetHitTestInfoAt funkció a megadott ponttal kapcsolatos információkat ad vissza a lista nézet ügyfélterületén.

Annak biztosítása érdekében, hogy az elemre kattintottak (vagy duplán kattintottak), fel kell hívnia a GetHitTestInfoAt-t, és csak akkor kell reagálnia, ha a kattintás esemény egy tényleges elemnél történt.

Íme egy példa a ListView1 OnDblClick eseményére:

// kezeli a ListView1 dupla kattintással történő kezelésételjárás TForm.ListView1DblClick(Feladó: TObject);
var
hts: THitTests;
ht: THitTest;
SHT: húr;
ListViewCursosPos: TPoint;
selectedItem: TListItem;
kezdődik
// az egér kurzorának pozíciója a ListView-hoz kapcsolódóan
ListViewCursosPos: = ListView1.ScreenToClient (Egér. CursorPos);
// dupla kattintással hol?
hts: = ListView1.GetHitTestInfoAt (ListViewCursosPos. X, ListViewCursosPos. Y);
// "hibakeresési" teszt
Felirat: = '';
mert ht ban ben HTS csinál
kezdődik
sht: = GetEnumName (TypeInfo (THitTest), egész szám (ht));
Felirat: = Formátum ('% s% s |', [Felirat, sht]);
vég;
// keresse meg a duplán kattintott elemet
ha hts <= [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] azután
kezdődik
selectedItem: = ListView1.Selected;
// csinálj valamit a dupla kattintással!
Felirat: = Formátum ('DblClcked:% s', [selectedItem. Felirat]) ;
vég;
vég;

Az OnDblClick (vagy OnClick) eseménykezelőben olvassa el a GetHitTestInfoAt funkciót, megadva az egér helyét a vezérlőn belül. Az egér helyének a nézethez viszonyított helyzetének meghatározásához a ScreenToClient funkcióval a képernyő koordinátáiban lévő pontot (egér X és Y) konvertálják helyi vagy kliens terület koordinátákká.

A GetHitTestInfoAt értékét adja vissza THitTests típus. A THitTests egy sor THitTest felsorolt ​​értékek.

A THITTest felsorolás az értékek a leírással:

  • htAbove - az ügyfél terület felett.
  • htBelow - az ügyfél terület alatt.
  • htNowhere - a vezérlő belsejében, de nem egy tárgyon.
  • htOnItem - egy elemnél, annak szövegén vagy bitképén.
  • htOnButton - egy gombon.
  • htOnIcon - egy ikonra.
  • htOnIndent - egy cikk behúzott részén.
  • htOnLabel - a címkén.
  • htOnRight - egy elem jobb oldalán.
  • htOnStateIcon - egy elemhez társított állapotikonon vagy bitképen.
  • htToLeft - az ügyfélterülettől balra.
  • htToRight - az ügyfél területétől jobbra.

Ha a GetHitTestInfoAt hívás eredménye a alkészlet (Delphi készletek!) [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] részéről biztos lehet abban, hogy a felhasználó rákattintott az elemre (vagy annak ikonjára / állapot ikonjára).

Végül, ha a fentiek igazak, olvassa el a Kiválasztott A lista nézet tulajdonsága esetén a lista nézetben visszatér az első kiválasztott elem (ha több is kiválasztható). Tegyen valamit a kattintott / dupla kattintással / kiválasztott elemmel ...

Töltse le a teljes forráskódot, hogy feltárja a kódot és megtanulja annak elfogadásával.

instagram story viewer