Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Ilidanek33
Člen
Avatar
Ilidanek33:12.12.2016 16:30

Čaute všichni, potřeboval bych poradit. Jak mám udělat multiselect pomocí myši? Napadlo mě, že bych v eventu OnMouseDown nějak zjišťoval, jestli se myší posunulo na vyšší/nižší index řádku a podle toho by se "dooznačovalo", ale toto řešení mi nepřijde nějak extra vhodné. Napadá někoho z vás nějaké jiné/lepší řešení? Předem díky :-)

 
Odpovědět
12.12.2016 16:30
Avatar
Ilidanek33
Člen
Avatar
Ilidanek33:12.12.2016 16:38

Taky mě napadlo v eventu OnMouseDown uložit index do nějaké globální proměnné a potom v eventu OnMouseUp mít for each cyklus, ve kterém by se označovalo, ale toto řešení se mi taky nějak nezdá. Doufám, že vás napadne nějaké vhodnější řešení.

Editováno 12.12.2016 16:39
 
Nahoru Odpovědět
12.12.2016 16:38
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:12.12.2016 17:06

Ahoj, nad jakou komponentou potřebuješ ten multiselect?

Nahoru Odpovědět
12.12.2016 17:06
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Ilidanek33
Člen
Avatar
Odpovídá na Michal Haňáček
Ilidanek33:12.12.2016 17:11

TListView.. Už to mám hotové, udělal jsem to tak, že v eventu OnMouseDown si ukládám do globální proměnné index itemu a v eventu OnMouseUp potom dělám rozdíl a v cyklu označuji.. Ale toto řešení se mi z nějakého mě neznámého důvodu nelíbí a myslím si, že mě s ním šéf pošle do háje :-D

 
Nahoru Odpovědět
12.12.2016 17:11
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:12.12.2016 17:13

Co děláš za Appku? Pokud je tvoje řešení spolehlivé, nevidím důvod proč by tě s tím šéf posílal kamkoliv :) ...

Nahoru Odpovědět
12.12.2016 17:13
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:12.12.2016 17:17

Jinak bych ti doporučil si prohlédnout Propery TListView ;) ... ona se totiž jedna z nich jmenuje MultiSelect a když jí zapneš, tak hádej co to dělá :D ...

Nahoru Odpovědět
12.12.2016 17:17
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Ilidanek33
Člen
Avatar
Odpovídá na Michal Haňáček
Ilidanek33:12.12.2016 18:29

Multiselect ano, ale není to řešeno pomocí myši.. Už jsem odevzdal několik projektů, spolehlivé na 100% byly, ale třeba jen proto, že nechápal logiku toho (i když to bylo jednoduché a dokonce i s komentářem), tak mě s tím poslal do háje..

 
Nahoru Odpovědět
12.12.2016 18:29
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:12.12.2016 19:37

je to řešeno pomocí myši, teď jsem to testoval (DXE7) ... pak nezbývá než si o tvém vedení myslet svoje :D ...

Nahoru Odpovědět
12.12.2016 19:37
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Ilidanek33
Martin Dráb:12.12.2016 20:16

Vlastnost MultiSelect ti dovolí myší označit více položek v TListView. Označovat je pak ale musíš tak, že při klikání na ně držíš zároveň klávesu CTRL (pro rozsah by mohl fungovat SHIFT). Prostě jako v Průzkumníku (ten podle mě používá nějakého potomka listviewu).

Takže pokud nechceš přidat nějaké extra chování, tak asi nemá tvoje řešení moc smysl.

Nahoru Odpovědět
12.12.2016 20:16
2 + 2 = 5 for extremely large values of 2
Avatar
Ilidanek33
Člen
Avatar
Ilidanek33:13.12.2016 9:32

V Delphi 7, když povolím multiselect, tak nemůžu označovat řádky tažením myši. Ta možnost tam prostě není

 
Nahoru Odpovědět
13.12.2016 9:32
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:13.12.2016 10:46

Až se dostanu dom, mrknu na to ...

Nahoru Odpovědět
13.12.2016 10:46
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Ilidanek33
Martin Dráb:13.12.2016 14:19

Ano, pokud vím, jde to jen skrz CTRL, možná i přes SHIFT.

Nahoru Odpovědět
13.12.2016 14:19
2 + 2 = 5 for extremely large values of 2
Avatar
Ilidanek33
Člen
Avatar
Odpovídá na Martin Dráb
Ilidanek33:13.12.2016 14:24

A já to potřebuji udělat na tažení myši.. Což už jsem si udělal, ale nemyslím si, že je to nejvhodnější řešení.

 
Nahoru Odpovědět
13.12.2016 14:24
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:13.12.2016 17:46

Teď jsem došel domů, a i ve stařičkejch Delphi7 tažení myší přes ListView (TListView) funguje, jak by člověk čekal. Přes ty prvky, přes které se přejede myší se označí.

Buď vůbec nerozumím tomu co chceš udělat a nebo je chyba někde jinde ...

Nahoru Odpovědět
13.12.2016 17:46
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Ilidanek33
Člen
Avatar
Odpovídá na Michal Haňáček
Ilidanek33:13.12.2016 18:02

Mě to teda nefunguje a šéf mi řekl, že tam mám tu funkci naprogramovat. Je to tam jen tak, jak píše Martin Dráb "jde to jen skrz CTRL, možná i přes SHIFT."

 
Nahoru Odpovědět
13.12.2016 18:02
Avatar
Odpovídá na Ilidanek33
Michal Haňáček:13.12.2016 18:10

Jestli můžu poprosit, tak bych uvítak nějaký video, nebo já nevim co, podle čeho bych pochopil v čem se to má chovat jinak než to co už je v D7 hotové ...

Nahoru Odpovědět
13.12.2016 18:10
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Michal Haňáček
Martin Dráb:13.12.2016 18:46

Myslím si, že chce, aby se položky v listview daly označovat stejně jako třeba v Průzkumníku (tzn. pouhým tažením myši můžeš vybrat více položek).

Nahoru Odpovědět
13.12.2016 18:46
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Michal Haňáček:13.12.2016 19:57

No tomu rozumím, ale tak se to přeci chová ...

Nahoru Odpovědět
13.12.2016 19:57
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Michal Haňáček
Martin Dráb:13.12.2016 20:07

Teď to nemám možnost vyzkoušet, ale podle mě listview v řádkovém stylu (vsReport) takhle bohužel nefunguje (je třeba shift/ctrl).

Nahoru Odpovědět
13.12.2016 20:07
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Michal Haňáček:13.12.2016 20:12

Hmmm, tak to pak leda, no. V tom případě se dá použít vsList ... ale tak třeba má Ilidanek33 nějakou speciální specifikaci. Tak nějak si právě od začátku nedokážu moc představit čeho hce dosáhnout ...

Nahoru Odpovědět
13.12.2016 20:12
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Ilidanek33
Člen
Avatar
Ilidanek33:13.12.2016 21:46

Chci dosáhnout přesně toho, co píše Martin. Označovat v listu stejně jako v průzkumníku a to tažením myši.

 
Nahoru Odpovědět
13.12.2016 21:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.