Portál AbcLinuxu, 26. dubna 2024 15:41


Dotaz: Lazarus ListView OnSelectItem vola vicenasobne

19.3.2012 00:34 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Lazarus ListView OnSelectItem vola vicenasobne
Přečteno: 275×
Odpovědět | Admin

Ahoj

Zkousel jsem hledat, ale strejdy Googla se neumim spravne zeptat, tudiz jsem odpoved nenasel.

Mam ListItem, v nem 4 polozky (Pol1, Pol2, Pol3 a Pol4). Po spusteni programu je (implicitne) vybrana Pol1. Kliknu na polozku Pol3 a zavola se OnSelectItem se vstupnimi parametry

Item: Pol3
Selected: true
Potud vse OK. Jenze vzapeti se OnSelectItem zavola podruhe s
Item: Pol1
Selected: false
(tedy predchozi vybrana polozka) a vzapeti jeste potreti s
Item: Pol3
Selected: true
(nove vybrana). A takto se to chova pri kazdem vyberu jine polozky, nez je aktualne vybrana (proste kdyz dojde k volani OnSelectItem).

Nevite nekdo, jak tomuhle vicenasobnemu volani zabranit? Nebo aspon jak odfiltrovat to treti (nebo klidne i to prvni, na tom uz asi nesejde) volani (s druhym neni problem diky Selected). Dival jsem se na Sender, ale pokazde je stejny. Na tu udalost mam navazanou akci, ktera chvili trva a docela to zdrzuje.

Diky moc za kazde nakopnuti spravnym smerem.

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.3.2012 12:47 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Lazarus ListView OnSelectItem vola vicenasobne
Odpovědět | | Sbalit | Link | Blokovat | Admin

To uz se tady nevyskytuje zadny pascalista? :-(

Zatim jsem to vyresil pomocnou promennou, kterou si pri druhem volani (s Selected = false) nastavim, takze pri tretim volani mam priznak, ze udalost uz mam obslouzenou.

Ale kdyby nekdo znal elegantnejsi reseni, budu rad.

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
22.3.2012 17:58 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Lazarus ListView OnSelectItem vola vicenasobne
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak som si to vyskúšal a mne to funguje správne. Na 64-bit Windows 7, lazarus-0.9.30.4-fpc-2.6.0-win64. Class toho widgetu je TListView zo skupiny Common Controls, metóda OnSelectedItem(). Že by to bolo OS, verziou alebo som nezvolil správny widget? Večer to ešte vyskúšam na Linuxe.
22.3.2012 19:41 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Lazarus ListView OnSelectItem vola vicenasobne
mne to funguje správne

Ahoj

Moc diky za snahu. Co mas na mysli vyrazem "spravne".

Mi se to popisovanym zpusobem chova na Fedore 6 32 bit (ano, archaicky system, ale proc vrtat do neceho, co mam nastavene a funguje), Lazarus 0.9.40, FPC 2.4.2, revize SVN 29811, i386-linux-gtk 2

A ted jsem to zkusil na WinXP (taky Lazarus 0.9.40, FPC 2.4.2, revize SVN 29749, i386-win32-win32/win64) a tam nedojde k tomu prvnimu volani. Takze jen "Unselect" na predchozi polozce a "Select" na nove.

Uvidime tedy, jak se ti to bude chovat na linuxu :-)

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
22.3.2012 20:55 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Lazarus ListView OnSelectItem vola vicenasobne
Správne znamená, že keď má selektnutú jednu položku a kliknem na inú, tak mi prídu dva eventy(nie tri). Jeden je odselektovanie tej, čo bola selektnutá na začiatku a druhý je zaselektovanie tej, na ktorú som klikol. Zisťujem, že FPC/Lazarus mi na Linuxe nefunguje tak, ako by mal, takže tam to vyskúšať nemôžem :-/
22.3.2012 21:54 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Lazarus ListView OnSelectItem vola vicenasobne

Správne znamená, že keď má selektnutú jednu položku a kliknem na inú, tak mi prídu dva eventy(nie tri). Jeden je odselektovanie tej, čo bola selektnutá na začiatku a druhý je zaselektovanie tej, na ktorú som klikol.
Tak nejak jsem tohle predpokladal, dekuji za potvrzeni domnenky.

Beru to teda tak, ze problem mam nekde v "systemu" (nemyslim OS) a musim se s tim bud smirit nebo nejak vyporadat sam.

Jeste jednou moc diky za snahu

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.