„TListView“ įdiegimas elemento paspaudimu / dvigubu paspaudimu

Delfų „TListView“ valdymas rodo elementų sąrašą stulpeliuose su stulpelių antraštėmis ir poaibiais arba vertikaliai arba horizontaliai su mažomis ar didelėmis piktogramomis.

Kaip ir dauguma Delphi valdiklių, TListView atskleidžia Paspaudus ir „OnDblClick“ („OnDoubleClick“) įvykius.

Deja, jei jūs turite žinoti, kuris elementas buvo spustelėtas ar du kartus spustelėtas, negalite tiesiog valdyti „OnClick“ / „OnDblClick“ įvykių, kad gautumėte elementą, kurį spustelėjote.

„TListView“ „OnClick“ („OnDblClick“) įvykis suaktyvinamas kiekvieną kartą, kai vartotojas spustelėja valdiklį - tai yra kiekvieną kartą, kai įvyksta „paspaudimas“. kažkur kliento valdymo srityje.

Vartotojas gali spustelėti sąrašo rodinį, BET „praleisti“ bet kurį elementą. Dar daugiau, nes sąrašo rodinys gali pakeisti jo rodinį, atsižvelgiant į „ViewStyle“ savybę - vartotoją galbūt spustelėjote elementą, elemento antraštę, elemento piktogramą, „niekur“, elemento būsenos piktogramą, tt

Pastaba: „ViewStyle“ nuosavybė nustato, kaip elementai rodomi sąrašo rodinyje: elementus galima rodyti kaip kilnojamųjų piktogramų rinkinį arba kaip teksto stulpelius.

instagram viewer

Sarašas. Ant elemento spustelėkite & sąrašo peržiūra. Ant elemento dukart spustelėkite

Kad surastumėte elementą, kuriam spustelėta (jei yra), kai „OnClick“ įvykis sąrašo rodinyje suaktyvinamas, turite nustatyti, kas sąrašo rodinio elementai yra po tašku, kurį nurodo X ir Y parametrai - tai yra pelės buvimo vieta „paspausti“.

„TListiew's“ „GetHitTestInfoAt“ funkcija grąžina informaciją apie nurodytą tašką sąrašo rodinio kliento srityje.

Norėdami įsitikinti, kad elementas buvo spustelėtas (arba du kartus spustelėtas), turite paskambinti „GetHitTestInfoAt“ ir reaguoti tik tuo atveju, jei paspaudimo įvykis įvyko ant tikro elemento.

Štai „ListView1“ „OnDblClick“ įvykio įgyvendinimo pavyzdys:

// tvarko „ListView1“ dvigubu paspaudimuprocedūra TForm.„ListView1“„DblClick“(Siuntėjas: TObject);
var
skrybėlės: „THitTests“;
ht: „THitTest“;
sht: stygos;
„ListViewCursosPos“: „TPoint“;
selectedItem: TListItem;
prasideda
// pelės žymeklio padėtis, susijusi su „ListView“
„ListViewCursosPos“: = „ListView1.ScreenToClient“ (pelė. CursorPos);
// dukart spustelėkite kur?
hts: = ListView1.GetHitTestInfoAt (ListViewCursosPos. X, „ListViewCursosPos“. Y);
// „derinimo“ įvykio testas
Antraštė: = '';
dėl ht į hts daryti
prasideda
sht: = GetEnumName („TypeInfo“ (THitTest), sveikasis skaičius (ht));
Antraštė: = Formatas ('% s% s |', [Antraštė, sht]);
galas;
// suraskite elementą, kurį du kartus spustelėta
jei hts <= [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] tada
prasideda
selectedItem: = ListView1.Pasirinkta;
// padaryk ką nors su dvigubai spustelėtu elementu!
Antraštė: = Formatas („DblClcked:% s“, [selectedItem. Antraštė]);
galas;
galas;

„OnDblClick“ (arba „OnClick“) įvykių apdorojimo priemonėje perskaitykite „GetHitTestInfoAt“ funkciją, nurodydami pelės vietą „viduje“ valdymo pulte. Norėdami sužinoti su pelės vieta, susijusia su sąrašo rodiniu, „ScreenToClient“ funkcija naudojama konvertuoti tašką (pelės X ir Y) ekrano koordinatėse į vietines arba kliento srities koordinates.

„GetHitTestInfoAt“ grąžina vertę „THTTests“ tipo. „THitTests“ yra rinkinys „THitTest“ išvardytos vertybės.

„THITTest“ surašymas vertės su jų aprašymu yra:

  • htAbove - virš kliento srities.
  • htBelow - žemiau kliento srities.
  • htNiekur - valdiklio viduje, bet ne ant daikto.
  • htOnItem - ant elemento, jo teksto ar bitkoino.
  • htOnButton - ant mygtuko.
  • htOnIcon - ant piktogramos.
  • htOnIndent - ant daikto briaunos.
  • htOnLabel - etiketėje.
  • htOnRight - dešinėje daikto pusėje.
  • htOnStateIcon - ant būsenos piktogramos arba bitkoino, susieto su elementu.
  • htToLeft - kliento srities kairėje.
  • „htToRight“ - kliento srities dešinėje.

Jei skambučio į „GetHitTestInfoAt“ rezultatas yra: poaibis („Delphi“ rinkiniai!) iš [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] galite būti tikri, kad vartotojas spustelėjo elementą (arba jo piktogramą / būsenos piktogramą).

Galiausiai, jei tai, kas pasakyta, yra tiesa, perskaitykite Pasirinkta Sąrašo rodinio nuosavybė grąžina pirmąjį pasirinktą elementą (jei galima pasirinkti kelis) sąrašo rodinyje. Darykite ką nors su spustelėtu / dukart spustelėtu / pasirinktu elementu ...

Nepamirškite atsisiųsti viso šaltinio kodo, kad galėtumėte ištirti kodą ir išmokti jį pritaikę.