Sdílet prostřednictvím


Implementace pracovních oblastí v ovládacích prvcích seznam

Ve výchozím nastavení ovládací prvek seznam Uspořádá všechny položky způsobem standardní mřížky.Však jiná metoda je podporována, pracovní plochy, které uspořádá položky seznamu do obdélníkové skupin.Pro bitovou kopii seznamu ovládacího prvku, který implementuje pracovní prostory, naleznete pomocí ovládacích prvků seznamu zobrazení v Windows SDK.

[!POZNÁMKA]

Pracovní prostory jsou viditelné pouze v případě, že ovládací prvek seznamu je v režimu malou ikonu nebo ikony.Pokud přepnutí zobrazení do režimu sestavy nebo seznam se však zachovány všechny aktuální pracovní oblasti.

Pracovní prostory lze zobrazit prázdné okraje (vlevo, nahoře a vpravo od položky) nebo způsobit zobrazený při normálně by existovat jeden vodorovný posuvník.Jiné běžné použití je vytvořit více pracovních prostorech, které položky přesunuty nebo vynechány.Pomocí této metody můžete vytvořit oblasti v jediném zobrazení, které mají různé významy.Uživatel může potom kategorií zboží umístěním v jiné oblasti.Příkladem tohoto by zobrazení systému souborů, který má oblast pro čtení a zápis souborů a jiné oblasti pro soubory jen pro čtení.Pokud soubor zboží byly přesunuty do oblasti jen pro čtení, by automaticky stane jen pro čtení.Přenos souborů z oblasti jen pro čtení do oblasti pro čtení a zápis by vytvořit soubor pro čtení a zápis.

CListCtrlposkytuje několik členských funkcí pro vytváření a správa pracovních ploch ve vašem ovládacím prvku seznamu.GetWorkAreas a SetWorkAreas získat a nastavit pole CRect objekty (nebo RECT struktury), které aktuálně prováděné pracovní prostory pro ovládací prvek seznamu uložit.Kromě toho GetNumberOfWorkAreas načte aktuální počet pracovních prostorech pro ovládací prvek seznamu (ve výchozím nastavení, nula).

Položky a pracovní plochy

Při vytvoření pracovní oblasti položek, které leží uvnitř oblasti práce se stávají členy ji.Podobně pokud položka je přesunuta do pracovní oblasti, stává členem pracovní oblast, do kterého byl přesunut.Pokud zboží nebylo umístěno v libovolné pracovní oblasti, automaticky stává členem první pracovní plocha (index 0).Pokud chcete vytvořit položky a je umístěn v rámci určité pracovní oblasti, je třeba vytvořit položku a přesuňte ji do požadované oblasti pracovní s voláním SetItemPosition.Druhý příklad demonstruje tuto techniku.

Následující příklad implementuje čtyři pracovní oblasti (rcWorkAreas), s 10 obrazových bodů celého ohraničení kolem každé pracovní plochy v ovládacím prvku seznam stejné velikosti (m_WorkAreaListCtrl).

CSize size;
size = m_WorkAreaListCtrl.ApproximateViewRect(); 
size.cx += 100;
size.cy += 100;

CRect rcWorkAreas[4];
rcWorkAreas[0].SetRect(0, 0, (size.cx/2) - 5, (size.cy/2) - 5);
rcWorkAreas[1].SetRect((size.cx/2) + 5, 0, size.cx, (size.cy/2) - 5);
rcWorkAreas[2].SetRect(0, (size.cy/2) + 5, (size.cx/2) - 5, size.cy);
rcWorkAreas[3].SetRect((size.cx/2) + 5, (size.cy/2) + 5, size.cx, size.cy);

//set work areas
m_WorkAreaListCtrl.SetWorkAreas(4, rcWorkAreas);    

Volání ApproximateViewRect k pokusu o získání odhadu celkové plochy potřebné k zobrazení všech položek v jedné oblasti.Tento odhad je pak rozdělen do čtyř oblastí a doplněno 5 obrazových bodů celého ohraničení.

Následující příklad přiřazuje existující položky seznamu ke každé skupině (rcWorkAreas) a aktualizuje zobrazení ovládacího prvku (m_WorkAreaListCtrl) dokončit efekt.

// set insertion points for each work area
CPoint rgptWork[4];
for (int i = 0; i < 4; i++)
{
    rgptWork[i].x = rcWorkAreas[i].left + 10;
    rgptWork[i].y = rcWorkAreas[i].top + 10;
}
// now move all the items to the different quadrants 
for (int i = 0; i < 20; i++)
{
    m_WorkAreaListCtrl.SetItemPosition(i, rgptWork[i % 4]);
}

// force the control to rearrange the shuffled items
m_WorkAreaListCtrl.Arrange(LVA_DEFAULT);

Viz také

Referenční dokumentace

Používání atributu CListCtrl

Koncepty

Ovládací prvky (MFC)