Delfi Kontrole TListView parāda vienumu sarakstu kolonnās ar kolonnu galvenēm un apakšiedaļām vai vertikāli vai horizontāli ar mazām vai lielām ikonām.
Tāpat kā vairums Delphi vadības ierīču, TListView pakļauj OnClick un OnDblClick (OnDoubleClick) notikumiem.
Diemžēl, ja jums jāzina, uz kāda vienuma tika noklikšķināts vai divreiz noklikšķināts, jūs nevarat vienkārši rīkoties ar OnClick / OnDblClick notikumiem, lai iegūtu noklikšķināto vienumu.
TListView OnClick (OnDblClick) notikums tiek aktivizēts ikreiz, kad lietotājs noklikšķina uz vadības ierīces - tas ir, kad notiek “klikšķis”. kaut kur vadības klienta zonā.
Lietotājs var noklikšķināt saraksta skatā, BET "palaist garām" jebkuru vienumu. Vēl jo vairāk, jo saraksta skats var mainīt tā displeju atkarībā no ViewStyle rekvizīta - lietotāja iespējams, ir noklikšķinājis uz preces, uz vienuma parakstiem, uz vienuma ikonas, “nekur”, uz vienuma stāvokļa ikonas, utt.
Piezīme: ViewStyle rekvizīts nosaka, kā vienumi tiek parādīti saraksta skatā: vienumus var parādīt kā pārvietojamu ikonu kopu vai kā teksta kolonnas.
ListView. Uz vienuma noklikšķiniet uz & saraksta skats. Uz vienuma dubultklikšķis
Lai varētu atrast vienumu, uz kura tika noklikšķināts (ja tāds ir), kad tiek aktivizēts saraksta skata OnClick notikums, jums jānosaka, saraksta skata elementi atrodas zem punkta, kuru norāda X un Y parametri - tā ir peles atrašanās vieta brīdī "klikšķis".
The TListiew's GetHitTestInfoAt funkcija atgriež informāciju par norādīto punktu saraksta skata klienta apgabalā.
Lai pārliecinātos, ka uz vienuma tika noklikšķināts (vai tika veikts dubultklikšķis), jums jāzvana uz GetHitTestInfoAt un jāreaģē tikai tad, ja klikšķa notikums notika uz faktiska vienuma.
Šeit ir saraksts ar ViewView1 OnDblClick notikuma ieviešanu:
// apstrādā saraksta ViewView dubultklikšķiprocedūra TForm.ListView1DblClick(Sūtītājs: TObject);
var
hts: THitTests;
ht: THitTest;
sht: virkne;
ListViewCursosPos: TPoint;
selectedItem: TListItem;
sākt
// peles kursora pozīcija, kas saistīta ar ListView
ListViewCursosPos: = ListView1.ScreenToClient (pele. CursorPos);
// veiciet dubultklikšķi uz kurieni?
hts: = ListView1.GetHitTestInfoAt (ListViewCursosPos. X, ListViewCursosPos. Y);
// "atkļūdošanas" trāpījuma pārbaude
Paraksts: = '';
priekš ht iekšā hts darīt
sākt
sht: = GetEnumName (TypeInfo (THitTest), Integer (ht));
Paraksts: = formāts ('% s% s |', [paraksts, sht]);
beigas;
// atrodiet vienumu, uz kura dubultklikšķis noklikšķināja
ja hts <= [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] tad
sākt
selectedItem: = ListView1.Selected;
// dari kaut ko ar dubultklikšķi noklikšķināmu vienumu!
Paraksts: = formāts ('DblClcked:% s', [selectedItem. Paraksts]);
beigas;
beigas;
OnDblClick (vai OnClick) notikumu apstrādātājā izlasiet funkciju GetHitTestInfoAt, nodrošinot tai ar peles atrašanās vietu vadības ierīces iekšpusē. Lai iegūtu peles atrašanās vietu, kas saistīta ar saraksta skatu, tiek izmantota funkcija ScreenToClient, lai ekrāna koordinātēs punktu (peles X un Y) pārvērstu vietējās vai klienta apgabala koordinātēs.
GetHitTestInfoAt atgriež vērtību THITTests tips. THitTests ir kopums THitTest uzskaitītās vērtības.
THITTest uzskaitījums vērtības ar to aprakstu ir:
- htPirms - virs klienta zonas.
- htBelow - zem klienta zonas.
- htNekur - vadības ierīces iekšpusē, bet ne priekšmetā.
- htOnItem - priekšmetam, tā tekstam vai bitkartei.
- htOnButton - uz pogas.
- htOnIcon - uz ikonas.
- htOnIndent - uz priekšmeta atkāpes.
- htOnLabel - uz etiķetes.
- htOnRight - priekšmeta labajā pusē.
- htOnStateIcon - uz stāvokļa ikonas vai bitkartes, kas saistīta ar vienumu.
- htToLeft - pa kreisi no klienta zonas.
- htToRight - pa labi no klienta zonas.
Ja zvana uz GetHitTestInfoAt rezultāts ir: apakškopa (Delphi komplekti!) no [htOnIcon, htOnItem, htOnLabel, htOnStateIcon], jūs varat būt pārliecināti, ka lietotājs noklikšķināja uz vienuma (vai uz tā ikonas / stāvokļa ikonas).
Visbeidzot, ja iepriekš teiktais ir taisnība, izlasiet Atlasīts saraksta rekvizītam, tas atgriež pirmo atlasīto vienumu (ja var izvēlēties vairākus) saraksta skatā. Dariet kaut ko ar noklikšķinātu / dubultklikšķi / atlasītu vienumu ...
Noteikti lejupielādējiet pilnu avota kodu, lai izpētītu kodu un uzzinātu, pieņemot to.