Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prohlédněte si ukázku ovládacího prvku Virtual listview.
Ovládací prvek zobrazení seznamu je okno, které zobrazuje kolekci položek. Ovládací prvky zobrazení seznamu poskytují několik způsobů, jak uspořádat a zobrazit položky, a poskytují mnohem větší flexibilitu než jednoduché seznamové pole. Například další informace o každé položce se dají zobrazit ve sloupcích napravo od ikony a popisku.
- List-View styly a zobrazení
- Virtuální List-View Styl
- List-View Pracovních oblastí
- List-View seznamy obrázků
- List-View Položky a Podřízené Položky
- List-View sloupců
- List-View pozice posuvníku
- List-View úprava popisků
- List-View barvy
- Uspořádání položek seznamu podle skupin
- Značky pro vložení
List-View Styly a zobrazení
Ovládací prvky zobrazení seznamu můžou zobrazovat položky v pěti různých zobrazeních. Styl okna ovládacího prvku určuje výchozí zobrazení. Další styly oken určují zarovnání položek a specifické funkce ovládacích prvků. Následující tabulka popisuje zobrazení.
| Název zobrazení | Popis |
|---|---|
| Zobrazení ikon | Určuje styl okna LVS_ICON nebo předáním LV_VIEW_ICON se zprávou LVM_SETVIEW. Každá položka se zobrazí jako ikona plné velikosti s popiskem pod ním. Uživatel může přetáhnout položky do libovolného umístění v okně zobrazení seznamu. |
| Malé zobrazení ikon | Určeno stylem okna LVS_SMALLICON nebo předáním LV_VIEW_SMALLICON ve spojení s LVM_SETVIEW. Každá položka se zobrazí jako malá ikona s popiskem napravo od ní. Uživatel může přetáhnout položky do libovolného umístění. |
| Zobrazení seznamu | Určuje styl okna LVS_LIST nebo předáním LV_VIEW_LIST s LVM_SETVIEW. Každá položka se zobrazí jako malá ikona s popiskem napravo od ní. Položky jsou uspořádány do sloupců a uživatel je nemůže přetáhnout do libovolného umístění. |
| Zobrazení sestavy (podrobnosti) | Určeno stylem okna LVS_REPORT nebo zadáním LV_VIEW_DETAILS spolu s LVM_SETVIEW. Každá položka se zobrazí na vlastním řádku s informacemi uspořádanými do sloupců. Sloupec úplně vlevo je vždy zarovnaný vlevo a obsahuje malou ikonu a popisek. Následující sloupce obsahují dílčí položky určené aplikací. Každý sloupec má záhlaví, pokud nezadáte také styl okna LVS_NOCOLUMNHEADER. |
| Zobrazení dlaždic | Verze 6 a novější. Zadané předáním LV_VIEW_TILE s LVM_SETVIEW. Každá položka se zobrazí jako ikona plné velikosti s popiskem jednoho nebo více řádků vedle ní. |
Následující snímky obrazovky používají různá zobrazení k představení různých objemů informací o každém ze sedmi domácích mazlíčků. Zobrazení ukazují, jak se informace mohou objevit v systému Windows Vista. Vizuální styly ovládacího prvku byly nastaveny na téma "Explorer", a to pomocí SetWindowTheme.
Následující snímek obrazovky ukazuje zobrazení podrobností.
Následující snímek obrazovky ukazuje zobrazení ikon.
Následující snímek obrazovky ukazuje zobrazení seznamu.
Následující snímek obrazovky ukazuje zobrazení dlaždice.
Typ zobrazení můžete změnit po vytvoření ovládacího prvku zobrazení seznamu. Pokud chcete načíst a změnit styl okna, použijte funkce GetWindowLong a SetWindowLong. Chcete-li určit styly oken aktuálního zobrazení, použijte hodnotu LVS_TYPEMASK.
Způsob, jakým jsou položky uspořádané do ikony nebo malého zobrazení ikon, můžete řídit zadáním LVS_ALIGNTOP (výchozí) nebo LVS_ALIGNLEFT stylu okna.
Zarovnání můžete změnit po vytvoření ovládacího prvku zobrazení seznamu. K určení aktuálního zarovnání použijte hodnotu LVS_ALIGNMASK.
Další styly oken poskytují další možnosti, například to, jestli uživatel může upravit popisky nebo vybrat více položek najednou. Úplný seznam viz List-View Styly oken.
Rozšířené styly List-View
Rozšířené styly ovládacích prvků zobrazení seznamu poskytují možnosti, jako jsou zaškrtávací políčka, ploché posuvníky, mřížkové čáry a sledování kurzorem. Úplný seznam najdete v tématu rozšířené styly List-View. K rozšířeným stylům zobrazení seznamu nemáte přístup stejným způsobem jako ke standardním stylům oken. K provádění rozšířených změn stylu nepoužíváte funkce GetWindowLong a SetWindowLong.
Existují dvě zprávy, které nastavují a načítají rozšířené informace o stylu, LVM_SETEXTENDEDLISTVIEWSTYLE a LVM_GETEXTENDEDLISTVIEWSTYLE. Místo explicitního odesílání zpráv můžete použít následující odpovídající makra: ListView_SetExtendedListViewStyle, ListView_SetExtendedListViewStyleExa ListView_GetExtendedListViewStyle.
Styl virtuálního List-View
Zobrazení virtuálního seznamu je ovládací prvek zobrazení seznamu, který má styl LVS_OWNERDATA. Tento styl umožňuje ovládacímu prvku zpracovávat miliony položek, protože vlastník dostává zatížení správy dat položek. To vám umožní používat virtuální ovládací prvek zobrazení seznamu s velkými databázemi informací, kde už existují konkrétní metody přístupu k datům.
Virtuální ovládací prvek zobrazení seznamu udržuje velmi málo informací o položkách. Kromě výběru položky a informací o fokusu musí vlastník ovládacího prvku spravovat všechny informace o položce. Jiné procesy požadují informace o položkách od majitele pomocí kódů oznámení LVN_GETDISPINFO.
Vzhledem k tomu, že tento typ ovládacího prvku seznamu je určený pro velké datové sady, doporučujeme ukládat požadovaná data položek do mezipaměti, aby se zlepšil výkon načítání. Zobrazení seznamu poskytuje mechanismus nápovědy k mezipaměti, který vám pomůže s optimalizací mezipaměti. Nápověda je implementována ve formě LVN_ODCACHEHINT kódu oznámení.
Vytvoření virtuálního ovládacího prvku List-View
Ovládací prvky zobrazení virtuálního seznamu vytvoříte pomocí funkce CreateWindow nebo CreateWindowEx, která určuje styl okna LVS_OWNERDATA jako součást parametru funkce dwStyle. Dynamické přepínání do a ze stylu LVS_OWNERDATA se nepodporuje.
Styl LVS_OWNERDATA můžete použít v kombinaci s většinou ostatních stylů oken s výjimkou LVS_SORTASCENDING nebo stylu LVS_SORTDESCENDING. Všechny ovládací prvky zobrazení virtuálního seznamu jsou výchozí pro styl LVS_AUTOARRANGE.
Chcete-li povolit zobrazení položek v seznamu, musíte nejprve odeslat zprávu LVM_SETITEMCOUNT, a to buď explicitně, nebo pomocí ListView_SetItemCountEx makra.
Následující zprávy nejsou podporovány ve stylu LVS_OWNERDATA: LVM_ENABLEGROUPVIEW, LVM_GETITEMTEXT, LVM_SETTILEINFOa LVM_MAPIDTOINDEX.
Problémy s kompatibilitou
Všechny čtyři styly zobrazení seznamu – ikona, malá ikona, seznam a zobrazení sestav – podporují styl LVS_OWNERDATA. Ovládací prvky zobrazení seznamu, které mají styl LVS_OWNERDATA, neukládají žádné informace specifické pro položky. Proto jsou jedinými platnými příznaky stavu položky, které můžete použít u položky, LVIS_SELECTED a LVIS_FOCUSED. Nejsou uloženy žádné další informace o stavu. Ovládací prvek zobrazení seznamu zejména neudržuje stav ani překryvné obrázky pro každou položku. Ale můžete ovládacím prvkem zobrazení seznamu nastavit dotazování vaší aplikace na tyto obrázky odesláním zprávy LVM_SETCALLBACKMASK.
Většina ovládacích zpráv zobrazení seznamu a přidružených maker je plně podporovaná. Některé zprávy však mají omezení nebo nejsou podporovány při použití stylu LVS_OWNERDATA. Následující tabulka shrnuje ovlivněné zprávy.
| Zpráva | Omezení |
|---|---|
| LVM_ARRANGE | Nepodporuje styl LVA_SNAPTOGRID. |
| LVM_DELETEALLITEMS | Nastaví počet položek na nulu a vymaže všechny interní proměnné výběru, ale ve skutečnosti neodstraní žádné položky. Provede notifikační zpětné volání. |
| LVM_DELETEITEM | Podporuje se pouze integrita výběru a ve skutečnosti neodstraní položku. |
| LVM_GETITEMSTATE | Vrátí pouze fokus a stavy výběru (to znamená stavy uložené ovládacím prvek zobrazení seznamu). |
| LVM_GETNEXTITEM | Nepodporuje kritéria hledání v zobrazení seznamu LVNI_CUT, LVNI_HIDDENani LVNI_DROPHILITED. Podporují se všechna ostatní kritéria. |
| LVM_GETWORKAREAS | Nepodporuje se. |
| LVM_INSERTITEM | Podporuje se pouze integrita výběru. |
| LVM_SETITEM | Nepodporuje se. Pokud chcete nastavit stav položky, použijte zprávu ListView_SetItemState. |
| LVM_SETITEMCOUNT | Nastaví počet položek, které jsou aktuálně v seznamu. Pokud ovládací prvek zobrazení seznamu odešle oznámení, které požaduje data pro libovolnou položku až do maximální sady, musí být vlastník připraven k poskytnutí dat. Parametry zprávy podporují virtuální ovládací prvky zobrazení seznamu. |
| LVM_SETITEMPOSITION | Nepodporuje se. |
| LVM_SETITEMSTATE | Umožňuje pro položku změnit pouze stavy výběru a fokusu. |
| LVM_SETITEMTEXT | Nepodporuje se. Je zodpovědností aplikace udržovat texty položek. |
| LVM_SETWORKAREAS | Nepodporuje se. |
| LVM_SORTITEMS | Nepodporuje se. Je zodpovědností aplikace prezentovat položky v požadovaném pořadí. |
Zpracování notifikačních kódů řízení virtuálních List-View
Ovládací prvky zobrazení seznamu se stylem LVS_OWNERDATA odesílají stejné kódy oznámení jako ostatní ovládací prvky zobrazení seznamu a dvě další: LVN_ODCACHEHINT a LVN_ODFINDITEM. Následují nejběžnější oznámení, která ovládací prvek zobrazení seznamu se stylem LVS_OWNERDATA odesílá.
| Oznámení | Popis |
|---|---|
| LVN_GETDISPINFO | Virtuální ovládací prvek zobrazení seznamu udržuje sama o sobě velmi málo informací o položkách. V důsledku toho často odesílá kód oznámení LVN_GETDISPINFO k vyžádání informací o položce. Tato zpráva se zpracovává podobně jako položky zpětného volání ve standardním ovládacím prvku seznamu. Vzhledem k tomu, že počet položek podporovaných ovládacím prvek může být velmi velký, zvyšuje se výkon ukládání dat položek do mezipaměti. Při zpracování LVN_GETDISPINFO se vlastník ovládacího prvku poprvé pokusí poskytnout požadované informace o položce z mezipaměti (další informace najdete v tématu Správa mezipaměti). Pokud požadovaná položka není uložena v mezipaměti, musí být vlastník připraven poskytnout informace jinými prostředky. |
| LVN_ODCACHEHINT | Zobrazení virtuálního seznamu odešle kód oznámení LVN_ODCACHEHINT, který vám pomůže optimalizovat mezipaměť. Kód oznámení poskytuje inkluzivní indexové hodnoty pro rozsah položek, které doporučuje ukládat do mezipaměti. Po přijetí oznamovacího kódu musí být vlastník připraven naplnit mezipaměť informacemi o položce pro požadovaný rozsah, aby informace byly okamžitě dostupné při odeslání LVN_GETDISPINFO zprávy. |
| LVN_ODFINDITEM | Kód oznámení LVN_ODFINDITEM je odeslán virtuálnímu ovládacímu prvku zobrazení seznamu, když tento prvek potřebuje, aby vlastník našel konkrétní položku s funkcí zpětného volání. Kód oznámení se odešle, když ovládací prvek zobrazení seznamu obdrží rychlý přístup ke klíči nebo když obdrží LVM_FINDITEM zprávu. Vyhledávací informace se odesílají ve formě struktury LVFINDINFO, která je členem struktury NMLVFINDITEM. Vlastník musí být připravený k vyhledání položky, která odpovídá informacím zadaným ovládacím prvku zobrazení seznamu. Vlastník vrátí index položky, pokud je úspěšná, nebo -1, pokud se nenajde žádná odpovídající položka. |
Správa mezipaměti
Ovládací prvek zobrazení seznamu se stylem LVS_OWNERDATA vytváří velký počet kódů oznámení LVN_GETDISPINFO a zprávu LVN_ODCACHEHINT, která pomáhá optimalizovat mezipaměť. LVN_ODCACHEHINT zprávy poskytují informace o doporučených položkách, které se mají zahrnout do mezipaměti. Tyto zprávy se odesílají jako WM_NOTIFY zprávy s hodnotou lParam, která funguje jako adresa struktury NMLVCACHEHINT.
Struktura NMLVCACHEHINT zahrnuje dva celočíselné členy, iFrom a iTo, které představují inkluzivní koncové body rozsahu položek, které budou pravděpodobně potřeba. Vlastník musí být připravený načíst mezipaměť s informacemi o všech položkách v doporučeném rozsahu.
Ovládací prvek seznamu často potřebuje informace o položce pro první položku (posun 0). Kód oznámení LVN_ODCACHEHINT nemusí vždy obsahovat položku 0, ale musí být vždy součástí mezipaměti.
Poslední položky v seznamu jsou často přístupné. Proto může vlastník chtít zachovat druhou mezipaměť, která obsahuje položky na konci seznamu. Požadovaný rozsah od LVN_ODCACHEHINT je možné zkontrolovat v koncové mezipaměti, aby byl automaticky dostupný místo opětovného načtení stejného koncového rozsahu pokaždé.
List-View Pracovní oblasti
Ovládací prvky zobrazení seznamu podporují pracovní oblasti, což jsou obdélníkové virtuální oblasti, které ovládací prvek zobrazení seznamu používá k uspořádání svých položek. Pracovní oblast není okno a nemůže mít viditelné ohraničení. Ve výchozím nastavení ovládací prvek zobrazení seznamu neobsahuje žádné pracovní oblasti. Vytvořením pracovní oblasti můžete vytvořit prázdné ohraničení vlevo, nahoře nebo vpravo od položek nebo způsobit zobrazení vodorovného posuvníku, pokud by ho normálně nebylo.
Při vytváření pracovní oblasti se položky, které leží v pracovní oblasti, stanou členy pracovní oblasti. Podobně pokud je položka přesunuta do pracovní oblasti, položka se stane členem této pracovní oblasti. Pokud položka není v žádné pracovní oblasti, stane se automaticky členem první pracovní oblasti (index 0). Chcete-li umístit novou položku do konkrétní pracovní oblasti, musíte nejprve vytvořit položku a potom ji pomocí LVM_SETITEMPOSITION nebo zprávy LVM_SETITEMPOSITION32 přesunout do požadované pracovní oblasti.
Následující obrázek je příkladem ovládacího prvku zobrazení seznamu, který obsahuje čtyři pracovní oblasti, z nichž každý je v jiném kvadrantu klientské oblasti.
Pro vytváření různých oblastí v jednom zobrazení je možné použít několik pracovních oblastí. Oblasti můžete vytvořit v jednom zobrazení, které mají různé významy. Například zobrazení systému souborů může mít oblast pro soubory pro čtení a zápis a další oblast pro soubory jen pro čtení. Uživatel může položky kategorizovat tak, že je umístí do různých pracovních oblastí. Pokud se soubor přesune do oblasti jen pro čtení, automaticky se stane jen pro čtení.
Více pracovních oblastí se může protínnout, ale všechny položky, které leží v průsečíku, se stanou členy oblasti s nižším indexem; proto je nejlepší se této situaci vyhnout. Při řazení více pracovních oblastí jsou položky seřazené ve srovnání s ostatními položkami ve stejné pracovní oblasti.
Počet pracovních oblastí lze načíst pomocí zprávy LVM_GETNUMBEROFWORKAREAS. Pracovní oblasti se změní pomocí zprávy LVM_SETWORKAREAS a mohou být načteny pomocí zprávy LVM_GETWORKAREAS. Obě tyto zprávy přebírají adresu pole RECT struktur jako lParam a počet RECT struktur jako wParam. levý a horní členy těchto struktur určují souřadnice levého horního rohu (původu) pracovní oblasti a vpravo a dolní členy určují pravý dolní roh pracovní oblasti. Všechny souřadnice jsou v klientských souřadnicích zobrazení seznamu. Maximální povolený počet pracovních oblastí je definován hodnotou LV_MAX_WORKAREAS.
Změna pracovní oblasti nemá žádný vliv na ovládací prvky zobrazení seznamu, které mají LVS_LIST nebo LVS_REPORT zobrazení, ale pracovní oblasti budou zachovány při změně typu zobrazení. V zobrazeních LVS_ICON a LVS_SMALLICON je možné pracovní oblast upravit tak, aby se změnil způsob zobrazení položek. Nastavení šířky pracovní oblasti (vpravo – vlevo) větší než šířka ovládacího prvku způsobí, že se položky zabalí na danou šířku a zobrazí se vodorovný posuvník. Zužování šířky pracovní oblasti, než je šířka klientské oblasti ovládacího prvku, způsobí, že se položky zabalí do pracovní oblasti, a ne do klientské oblasti. Nastavení vlevo nebo horní člen na kladnou hodnotu způsobí, že se položky zobrazí od pracovní oblasti a vytvoří prázdné místo mezi okrajem ovládacího prvku a položkami. Mezi pravým okrajem ovládacího prvku a položkami lze vytvořit také prázdné místo tím, že se šířka pracovní oblasti udrží menší než klientská šířka ovládacího prvku.
List-View seznamy obrázků
Ve výchozím nastavení ovládací prvek zobrazení seznamu nezobrazuje obrázky položek. Pokud chcete zobrazit obrázky položek, musíte vytvořit seznamy obrázků a přidružit je k ovládacímu prvku. Ovládací prvek zobrazení seznamu může mít tři seznamy obrázků:
- Seznam obrázků, který obsahuje ikony plné velikosti, se zobrazí, když je ovládací prvek v zobrazení ikon.
- Seznam obrázků, který obsahuje malé ikony zobrazované, když je ovládací prvek v režimu malých ikon, v zobrazení seznamu nebo v zobrazení sestavy.
- Seznam obrázků, který obsahuje obrázky stavu, které se zobrazují vlevo od ikony s plnou nebo malou velikostí. K označení stavů definovaných položek můžete použít obrázky stavu, jako jsou zaškrtnuté a nezaškrtnuté zaškrtávací políčka. Obrázky stavu se zobrazují v zobrazení ikon, v zobrazení malých ikon, v zobrazení seznamu a v zobrazení sestavy.
Seznamy obrázků s plnou velikostí a malými ikonami mohou také obsahovat překryvné obrázky, které jsou navrženy tak, aby byly transparentně kresleny přes ikony položek.
Použití překryvných obrázků v ovládacím prvku zobrazení seznamu:
- Zavolejte funkci ImageList_SetOverlayImage, abyste přiřadili index překryvu k obrázku v seznamech obrazů s plnou velikostí a malými ikonami. Překryvný obrázek je identifikovaný jedním indexem.
- Index překryvného obrázku můžete přidružit k položce při volání makra ListView_InsertItem nebo ListView_SetItem. Pomocí makra INDEXTOOVERLAYMASK určete index překryvného obrázku u člena stavu struktury LVITEM dané položky. Musíte také nastavit LVIS_OVERLAYMASK bity v stateMask člen.
Pokud je zadán seznam stavových obrázků, ovládací prvek zobrazení seznamu rezervuje místo nalevo od ikony každé položky pro obrázek stavu.
Chcete-li přidružit obrázek stavu k položce, použijte makro INDEXTOSTATEIMAGEMASK k určení indexu stavového obrázku ve stavu člen struktury LVITEM. Index identifikuje obrázek v seznamu stavových imagí ovládacího prvku. Indexy seznamu obrázků jsou sice založené na nule, ale ovládací prvek k identifikaci imagí stavu používá indexy založené na jednom. Index stavového obrázku nuly označuje, že položka nemá žádný stavový obrázek.
Když je ve výchozím nastavení zničen ovládací prvek zobrazení seznamu, zničí seznamy obrázků přiřazené k němu. Pokud má ovládací prvek zobrazení seznamu styl okna LVS_SHAREIMAGELISTS, je aplikace zodpovědná za zničení seznamů obrázků, když se už nepoužívají. Tento styl byste měli zadat, pokud přiřadíte stejné seznamy obrázků více ovládacím prvkům zobrazení seznamu; jinak se může pokusit zničit stejný seznam imagí více než jeden ovládací prvek.
List-View položky a dílčí položky
Každá položka v ovládacím prvku zobrazení seznamu má ikonu, popisek, aktuální stav a hodnotu definovanou aplikací. Pomocí zpráv zobrazení seznamu můžete přidávat, upravovat a odstraňovat položky a také načítat informace o položkách.
Každá položka může obsahovat jeden nebo více podpoložek. Položka je řetězec, který se v zobrazení sestavy zobrazuje ve sloupci odděleně od ikony a popisku. Chcete-li zadat text dílčí položky, použijte LVM_SETITEMTEXT nebo LVM_SETITEM zprávu. Všechny položky v ovládacím prvku zobrazení seznamu mají stejný počet dílčích položek. Počet podřízených položek je určen počtem sloupců v ovládacím prvku zobrazení seznamu. Když přidáte sloupec do ovládacího prvku zobrazení seznamu, zadáte jeho přidružený podřízený index.
Struktura LVITEM definuje položku zobrazení seznamu nebo dílčí položku. Člen iItem je index položky založený na nule. iSubItem člen je jednoprvkový index podpoložky nebo nula, pokud struktura obsahuje informace o položce. Další členové určují text, ikonu, stav a data položky. data položky jsou hodnota definovaná aplikací přidružená k položce zobrazení seznamu.
Chcete-li přidat položku do ovládacího prvku zobrazení seznamu, použijte LVM_INSERTITEM zprávu a zadejte adresu LVITEM struktury. Před přidáním více položek můžete ovládací prvek odeslat LVM_SETITEMCOUNT zprávu a určit počet položek, které bude ovládací prvek nakonec obsahovat. Tato zpráva umožňuje ovládacímu prvku zobrazení seznamu relokovat jeho interní datové struktury pouze jednou, a ne pokaždé, když přidáte položku. Počet položek v ovládacím prvku zobrazení seznamu můžete určit pomocí zprávy LVM_GETITEMCOUNT. Pokud do ovládacího prvku zobrazení seznamu přidáváte velký počet položek, můžete proces urychlit tak, že před přidáním položek zakážete překreslení a potom povolíte překreslení po přidání položek. Pomocí zprávy WM_SETREDRAW povolte a zakažte překreslení.
Chcete-li změnit atributy položky zobrazení seznamu, použijte LVM_SETITEM zprávu a zadejte adresu LVITEM struktury. Člen masky této struktury určuje atributy položky, které chcete změnit. Pokud například chcete změnit jenom text položky nebo podtituly, použijte LVM_SETITEMTEXT zprávu.
Chcete-li načíst informace o položce zobrazení seznamu, použijte zprávu LVM_GETITEM a zadejte adresu struktury LVITEM, která se má vyplnit. Člen masky této struktury určuje atributy položky, které se mají načíst. Pokud chcete načíst jenom text položky nebo podřízené položky, použijte zprávu LVM_GETITEMTEXT.
Pokud chcete odstranit položku zobrazení seznamu, použijte zprávu LVM_DELETEITEM. Všechny položky v ovládacím prvku zobrazení seznamu můžete odstranit pomocí LVM_DELETEALLITEMS zprávy.
List-View Stavy položek
Stav položky je hodnota, která určuje dostupnost položky, označuje akce uživatele nebo jinak odráží stav položky. Ovládací prvek zobrazení seznamu změní některé bity stavu, například když uživatel vybere položku. Aplikace může změnit jiné bity stavu tak, aby položku zakázala nebo skrývala nebo aby určila překryvný obrázek nebo obrázek stavu. Další informace o překryvných obrázcích a stavových obrázcích najdete v tématu List-View Seznamy obrázků.
Stav položky je určen stavem člen struktury LVITEM. Když zadáte nebo změníte stav položky, stateMask člen určuje, které bity stavu je potřeba změnit. Stav položky můžete změnit pomocí zprávy LVM_SETITEMSTATE. Stav položky můžete zadat při vytváření nebo při změně jeho atributů pomocí zprávy LVM_SETITEM. Pokud chcete zjistit aktuální stav položky, použijte zprávu LVM_GETITEMSTATE nebo LVM_GETITEM.
Pokud chcete nastavit překryvný obrázek položky, musí člen stateMask struktury LVITEM obsahovat hodnotu LVIS_OVERLAYMASK, a člen stavu musí obsahovat jednostranný index překryvného obrázku posunutý doleva o 8 bitů pomocí makra INDEXTOOVERLAYMASK. Index může být nulový, aby nebyl zadán žádný překryvný obrázek.
Pokud chcete nastavit obrázek stavu položky, musí člen stateMask struktury LVITEM obsahovat hodnotu LVIS_STATEIMAGEMASK a člen 'stav' musí obsahovat jednoprvkový index stavu obrázku, který je posunut o 12 bitů vlevo pomocí makra INDEXTOSTATEIMAGEMASK. Index může být nulový, což znamená žádný stavový obrázek.
Položky zpětného volání a maska zpětného volání
Pro každou z jejích položek ovládací prvek zobrazení seznamu obvykle ukládá text popisku, index seznamu obrázků ikon položky a sadu bitových příznaků pro stav položky. Můžete definovat položky zpětného volání nebo změnit masku zpětného volání ovládacího prvku tak, aby označí, že aplikace místo ovládacího prvku ukládá některé nebo všechny tyto informace. Pokud vaše aplikace ukládá některé z těchto informací, můžete použít zpětná volání.
Položka zpětného volání v ovládacím prvku pro zobrazení seznamu je položka, pro kterou aplikace ukládá buď text, index ikony, nebo obojí. Položky zpětného volání můžete definovat při odesílání zprávy LVM_INSERTITEM a přidat položku do ovládacího prvku zobrazení seznamu. Pokud aplikace ukládá text položky nebo dílčí položky, nastavte člena struktury LVITEM položky pszText na LPSTR_TEXTCALLBACK. Pokud aplikace uchovává index ikony pro položku, nastavte člena iImage ve struktuře položky LVITEM na I_IMAGECALLBACK.
Maska zpětného volání ovládacího prvku zobrazení seznamu je sada bitových příznaků, které určují stavy položek, pro které aplikace místo ovládacího prvku ukládá aktuální data. Maska zpětného volání se vztahuje na všechny položky ovládacího prvku, na rozdíl od označení položky zpětného volání, které platí pro konkrétní položku. Maska zpětného volání je ve výchozím nastavení nulová, což znamená, že ovládací prvek zobrazení seznamu ukládá všechny informace o stavu položky. Po vytvoření ovládacího prvku zobrazení seznamu a inicializaci jejích položek můžete odeslat zprávu LVM_SETCALLBACKMASK a změnit masku zpětného volání. Pokud chcete načíst aktuální masku zpětného volání, odešlete zprávu LVM_GETCALLBACKMASK.
Pokud ovládací prvek zobrazení seznamu musí zobrazit nebo seřadit položku zobrazení seznamu, pro kterou aplikace ukládá informace o zpětném volání, ovládací prvek odešle kód oznámení LVN_GETDISPINFO do nadřazeného okna ovládacího prvku. Tato zpráva určuje NMLVDISPINFO strukturu, která obsahuje typ požadovaných informací a identifikuje položku nebo dílčí položku, která se má načíst. Nadřazené okno musí zpracovávat LVN_GETDISPINFO za účelem poskytnutí požadovaných dat.
Pokud ovládací prvek zobrazení seznamu zjistí změnu informací o zpětném volání položky, jako je například změna v textu, ikoně nebo informacích o stavu, odešle ovládací prvek kód oznámení LVN_SETDISPINFO, který vás upozorní na změnu.
Pokud změníte atributy nebo bity stavu položky callback, použijete zprávu LVM_UPDATE k vynucení toho, aby ovládací prvek položku překreslil. Tato zpráva také způsobí, že ovládací prvek uspořádá jeho položky, pokud má LVS_AUTOARRANGE styl. Pomocí zprávy LVM_REDRAWITEMS můžete překreslit rozsah položek tak, že zrušíte platnost odpovídajících částí klientské oblasti ovládacího prvku seznamu.
Díky efektivnímu použití položek zpětného volání a masky zpětného volání můžete zajistit, aby každý atribut položky zůstal zachován pouze na jednom místě. To může zjednodušit aplikaci, ale jediným uloženým místem je paměť, která by jinak byla nutná k ukládání popisků položek a textu podpoložky.
umístění položky List-View
Každá položka zobrazení seznamu má pozici a velikost, kterou můžete načíst a nastavit pomocí zpráv. Můžete také určit, která položka, pokud vůbec nějaká, je na zadané pozici. Pozice položek v zobrazení seznamu je určena v souřadnicích zobrazení, což jsou klientské souřadnice upravené podle pozice posouvání.
Pokud chcete načíst a nastavit pozici položky, použijte LVM_GETITEMPOSITION a LVM_SETITEMPOSITION zprávy. LVM_GETITEMPOSITION funguje pro všechna zobrazení, ale LVM_SETITEMPOSITION funguje jenom pro zobrazení ikon a malých ikon.
Pomocí zprávy LVM_HITTEST můžete určit, která položka, jestli nějaká, je v určitém umístění.
Pokud chcete načíst ohraničující obdélník pro položku seznamu nebo pouze pro ikonu či popisek, použijte zprávu LVM_GETITEMRECT.
Uspořádání, řazení a hledání položek
Zprávy v zobrazení seznamu můžete použít k uspořádání a řazení položek a k vyhledání položek na základě jejich atributů nebo pozic. Uspořádáním se prvky zarovnají do mřížky, ale jejich indexy se nezmění. Řazení změní sekvenci položek (a jejich odpovídající indexy) a odpovídajícím způsobem je přemísťuje. Položky můžete uspořádat jenom v ikonách a malých zobrazeních ikon, ale položky můžete seřadit v libovolném zobrazení. Chcete-li najít položky, odešlete zprávy zobrazení seznamu, které určují umístění nebo vlastnost položky.
K uspořádání položek použijte zprávu LVM_ARRANGE. Zadáním stylu okna LVS_AUTOARRANGE můžete zajistit, aby byly položky uspořádány vždy.
Pokud chcete položky seřadit, použijte LVM_SORTITEMS zprávu. Při řazení pomocí této zprávy určujete zpětnou volací funkci definovanou aplikací, kterou ovládací prvek list-view volá pro porovnání relativního pořadí libovolných dvou položek. Ovládací prvek předá funkci porovnání data položek přidružená ke každé ze dvou položek. Data položky jsou hodnota, která byla zadána v lParam člen LVITEM struktury položky při vložení do seznamu. Zadáním odpovídajících dat položky a zadáním příslušné porovnávací funkce můžete položky seřadit podle jejich popisku, podle libovolného dílčího nebo jiné vlastnosti. Všimněte si, že řazení položek nepřeuspořádá odpovídající dílčí položky. Když jsou položky přeuspořádány, jejich odpovídající subpoložky se s nimi přenesou; to znamená, že celé řádky zůstanou pohromadě. Chcete-li uspořádat sloupce každý zvlášť a odpojit podpoložky, je nutné znovu vygenerovat sloupce po řazení pomocí LVM_SETITEM.
Můžete zajistit, aby byl ovládací prvek seznamového zobrazení vždy tříděn, tím, že zadáte styl okna LVS_SORTASCENDING nebo LVS_SORTDESCENDING. Ovládací prvky s těmito styly používají text popisku položek k seřazení ve vzestupném nebo sestupném pořadí. Při použití těchto stylů oken nelze zadat funkci porovnání. Pokud ovládací prvek zobrazení seznamu obsahuje některý z těchto stylů, zpráva LVM_INSERTITEM se nezdaří, pokud se pokusíte vložit položku, která má LPSTR_TEXTCALLBACK jako pszText člen jeho LVITEM struktury.
Položku zobrazení seznamu s konkrétními vlastnostmi najdete pomocí zprávy LVM_FINDITEM. Položku zobrazení seznamu, která je v zadaném stavu a má zadanou relaci s danou položkou, můžete najít pomocí zprávy LVM_GETNEXTITEM. Můžete například získat další vybranou položku napravo od zadané položky.
sloupce List-View
Sloupce řídí způsob zobrazení položek a jejich podřízených položek v zobrazení sestavy. Každý sloupec má název a šířku a je přidružený ke konkrétnímu dílčímu názvu; subitem nula je ikona a popisek položky. Atributy sloupce jsou definovány ve struktuře LVCOLUMN.
Pokud chcete přidat sloupec do ovládacího prvku zobrazení seznamu, použijte zprávu LVM_INSERTCOLUMN. Pokud chcete odstranit sloupec, použijte zprávu LVM_DELETECOLUMN.
Poznámka
Odstranění sloupce nula ovládacího prvku zobrazení seznamu je podporováno pouze v ComCtl32.dll verze 6 a novější. Verze 5 také podporuje odstranění sloupce nula, ale až po použití CCM_SETVERSION k nastavení verze na 5 nebo novější. Verze starší než verze 5 nepodporují odstranění sloupce nula.
Vlastnosti existujícího sloupce můžete načíst a změnit pomocí LVM_GETCOLUMN a LVM_SETCOLUMN zpráv. Pokud chcete načíst nebo změnit šířku sloupce, použijte LVM_GETCOLUMNWIDTH a LVM_SETCOLUMNWIDTH zprávy.
Pokud není zadaný styl okna LVS_NOCOLUMNHEADER, záhlaví sloupců se zobrazí v zobrazení sestavy. Uživatel může kliknout na záhlaví sloupce, což způsobí, že se do nadřazeného okna odešle kód oznámení LVN_COLUMNCLICK. Nadřazené okno obvykle seřazuje ovládací prvek pro zobrazení seznamu podle zadaného sloupce, když dojde k tomuto kliknutí. Uživatel může také přetáhnout vodítka sloupců mezi záhlavími a změnit velikost sloupců.
Ovládací prvky zobrazení seznamu můžou zobrazovat obrázky vedle názvů sloupců. Pokud chcete tuto funkci implementovat, zadejte hodnotu LVCF_IMAGE a přiřaďte index obrázku členu iImage ve struktuře LVCOLUMN.
Ovládací prvky zobrazení seznamu můžou nastavit pořadí zobrazení sloupců. Pokud chcete tuto funkci implementovat, zadejte hodnotu LVCF_ORDER a přiřaďte pořadí sloupců iOrder členu ve struktuře LVCOLUMN. Pořadí sloupců je založené na nule a je v pořadí zleva doprava. Například nula označuje sloupec úplně vlevo.
pozice posuvníku List-View
Pokud není zadán styl okna LVS_NOSCROLL, lze ovládací prvek zobrazení seznamu posunout, aby se zobrazilo více položek, než se vejde do klientské oblasti ovládacího prvku. Můžete načíst pozici posuvníku ovládacího prvku zobrazení seznamu a související informace, posunout ovládací prvek zobrazení seznamu podle zadané částky nebo posunout ovládací prvek zobrazení seznamu tak, aby byla zobrazena zadaná položka seznamu.
V zobrazení ikon nebo malém zobrazení ikon je pozice aktuálního rolování definována počátkem zobrazení. Původ zobrazení je sada souřadnic vzhledem k viditelné oblasti ovládacího prvku zobrazení seznamu, která odpovídá souřadnicům zobrazení (0, 0). Pokud chcete načíst aktuální zdroj zobrazení, použijte zprávu LVM_GETORIGIN. Tato zpráva by měla být použita pouze v zobrazení ikon nebo malých ikonek; při položkovém nebo sestavovém zobrazení vrátí chybu.
V zobrazení seznamu nebo sestavy je aktuální pozice posouvání definována horním indexem. Horní index je index první viditelné položky v ovládacím prvku zobrazení seznamu. K načtení aktuálního horního indexu použijte zprávu LVM_GETTOPINDEX. Tato zpráva vrátí platný výsledek pouze v zobrazení seznamu nebo sestavy; v zobrazení ikony nebo malé ikony vrátí hodnotu nula.
Pomocí zprávy LVM_GETVIEWRECT můžete získat ohraničující obdélník všech položek v ovládacím prvku seznamu v rámci viditelné oblasti ovládacího prvku.
Zpráva LVM_GETCOUNTPERPAGE vrátí počet položek, které se vejdou na jednu stránku ovládacího prvku zobrazení seznamu. Tato zpráva vrátí platný výsledek pouze v zobrazení seznamu a sestavy; v zobrazení ikon a malých ikon vrátí celkový počet položek.
Pokud chcete posunout ovládací prvek zobrazení seznamu o určitou částku, použijte zprávu LVM_SCROLL. Pomocí zprávy LVM_ENSUREVISIBLE můžete v případě potřeby posunout ovládací prvek zobrazení seznamu, abyste měli jistotu, že je zadaná položka viditelná.
úpravy popisků List-View
Ovládací prvek zobrazení seznamu, který má styl okna LVS_EDITLABELS, umožňuje uživateli upravovat popisky položek na místě. Uživatel začne upravovat kliknutím na popisek položky, která má fokus. Aplikace může také začít automaticky upravovat pomocí zprávy LVM_EDITLABEL. Ovládací prvek zobrazení seznamu upozorní nadřazené okno při zahájení úprav a po zrušení nebo dokončení. Po dokončení úprav zodpovídá nadřazené okno za aktualizaci popisku položky, pokud je to vhodné.
Při zahájení úprav popisku se vytvoří editační ovládací prvek , který se umístí a inicializuje. Před zobrazením odešle ovládací prvek zobrazení seznamu kód oznámení LVN_BEGINLABELEDIT nadřazenému oknu. Pokud potřebujete upravit proces úprav popisku, můžete pro toto oznámení implementovat obslužnou rutinu.
Jedním z použití obslužné rutiny oznámení LVN_BEGINLABELEDIT je určit, které popisky může uživatel upravovat. Pokud chcete zabránit úpravám popisků, vraťte nenulovou hodnotu. Pokud chcete upravit popisek, požádejte obslužnou rutinu oznámení, aby načetla popisovač do ovládacího prvku pro úpravy odesláním zprávy LVM_GETEDITCONTROL do ovládacího prvku zobrazení seznamu. Jakmile budete mít tento popisovač, můžete přizpůsobit editační ovládací prvek zasláním příslušných EM_XXX zpráv. Pokud například chcete omezit množství textu, který může uživatel zadat, odešlete zprávu ovládacímu prvku pro úpravy EM_LIMITTEXT. Výchozí text ovládacího prvku pro úpravy můžete změnit pomocí SetWindowText. Můžete dokonce podtřídujte ovládací prvek pro úpravy, abyste zachytili a zrušili neplatné znaky.
Když je zrušeno nebo dokončeno upravování popisků, ovládací prvek zobrazení seznamu odešle svému nadřazenému oknu oznámení s kódem LVN_ENDLABELEDIT. Parametr lParam je adresa struktury NMLVDISPINFO. Položka člen této struktury je struktura LVITEM, jejíž iItem člen identifikuje položku. Pokud je úprava zrušena, pszText jako člen struktury LVITEM je NULL; jinak pszText představuje adresu upraveného textu. Nadřazené okno zodpovídá za aktualizaci popisku položky, pokud chce nový popisek zachovat.
barvy List-View
Aplikace může načíst a nastavit tři barvy ovládacího prvku zobrazení seznamu.
| Barva | Zprávy používané k načtení a nastavení barev |
|---|---|
| Barva textu | LVM_GETTEXTCOLOR, LVM_SETTEXTCOLOR |
| Barva pozadí textu | LVM_GETTEXTBKCOLOR, LVM_SETTEXTBKCOLOR |
| Barva pozadí okna | LVM_GETBKCOLOR, LVM_SETBKCOLOR |
Pokud chcete vzhled ovládacího prvku zobrazení seznamu výrazněji přizpůsobit, použijte NM_CUSTOMDRAW (zobrazení seznamu) nebo použijte vizuální styly (viz vizuální styly a Povolení vizuálních stylů).
Uspořádání položek seznamu podle skupin
Funkce seskupení ovládacího prvku zobrazení seznamu umožňují vizuálně seskupit logicky související sady položek. Skupiny lze vytvořit na základě vlastností položky, atributů nebo jiných charakteristik. Tyto skupiny jsou obvykle oddělené na obrazovce vodorovným záhlavím, které obsahuje název skupiny. Následující snímek obrazovky ukazuje seskupené položky.
Pomocí struktury LVGROUP uložíte informace o skupině, jako je například text záhlaví a zápatí, aktuální stav skupiny atd. Rozhraní API pro seskupení obsahuje zprávy, které umožňují spravovat skupiny a prvky skupiny přidáním položek do skupin, přidáním skupin do zobrazení, řazením položek skupiny a dotazováním skupin na velikost položky a další informace. Můžete například nastavit a načíst parametry zobrazení pro každou skupinu pomocí ListView_SetGroupMetrics a ListView_GetGroupMetrics maker.
Seskupení je k dispozici ve všech zobrazeních s výjimkou zobrazení seznamu. Není k dispozici u ovládacích prvků, které mají styl LVS_OWNERDATA.
Další informace naleznete v tématu Použití ovládacích prvků List-View.
Značky vložení
Značky vložení ukazují uživatele, kde budou přetaženy položky. Indikátory vložení se zobrazují, když uživatel přetáhne položku do nabídky Start nebo na panel Snadné spuštění. Značka vložení funguje také pro seznamy, které jsou nastavené na automatické uspořádání. Když uživatel přetáhne položku do bodu mezi dvěma dalšími položkami, zobrazí značka vložení očekávané nové umístění položky. Následující snímek obrazovky ukazuje značku vložení.
Prvky API pro vložení umožňují umístění značek vložení tím, že poskytují zprávy a příznaky, které provádějí detekci zásahu, určují umístění a vzhled značky vložení pro položku a dotazují se na informace o aktuální velikosti a vzhledu značky vložení.