Sdílet prostřednictvím


Provádění pracovní oblasti v seznamu ovládacích prvků

Výchozí ovládací prvek seznamu Uspořádá všechny položky ve standardní mřížce způsobem.Však jiná metoda je podporována, pracovní oblasti, které uspořádá položky seznamu do obdélníkové skupin.Obrázek ovládacího prvku seznamu, který implementuje pracovní plochy 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.Aktuální pracovní plochy jsou však zachován, pokud přepnutí zobrazení do režimu zprávu nebo seznam.

Pracovní prostory lze zobrazit prázdné okraje (vlevo, nahoru nebo doprava zboží) nebo způsobit při obvykle skvělé existovat jeden zobrazí vodorovný posuvník.Jiné běžné použití je vytvoření více pracovních oblastí, kterým můžete položky přesunuty nebo zrušen.Tuto metodu nelze vytvořit oblastí v jediném zobrazení, které mají různé významy.Uživatel pak může kategorií položky umístěním v jiné oblasti.Například by zobrazení systém souborů, který má oblast pro čtení a zápis souborů a jiné oblasti pro soubory jen pro čtení.Pokud soubor položky byly přesunuty do oblasti určené pouze pro čtení, by automaticky stane, jen pro čtení.Přesunutí souboru jen pro čtení v oblasti do oblasti pro čtení i zápis by vytvořit soubor pro čtení i zápis.

CListCtrlposkytuje několik funkcí členů pro vytváření a Správa pracovních ploch v ovládacím prvku seznamu.GetWorkAreas a SetWorkAreas načíst a nastavit pole CRect objekty (nebo RECT struktury), které aktuálně implementováno pracovní plochy ovládacího prvku seznamu uložit.Kromě toho GetNumberOfWorkAreas obnoví aktuální číslo pracovní oblasti ovládacího prvku seznamu (standardně nula).

Položky a pracovní plochy

Při vytvoření pracovní oblast položek, které leží uvnitř oblasti pracovní stát členy ji.Podobně jestliže položku přesunete do pracovní oblasti, stane členem pracovní oblast, do které byl přesunut.Pokud zboží nebylo umístěno v libovolné pracovní oblasti, automaticky stává členem první pracovní oblasti (index 0).Pokud chcete vytvořit položky a mít jej umístit v určité oblasti pracovní, budete muset vytvořit položky a přesuňte ji do požadované pracovní oblasti s voláním SetItemPosition.Druhý příklad demonstruje tuto techniku.

Následující příklad používá čtyři pracovní oblasti (rcWorkAreas), stejné velikosti s 10 obrazových bodů celé ohraničení kolem každé pracovní plochy ovládacího prvku seznamu (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 byla provedena odhadnutí celkové plochy potřebné k zobrazení všech položek v jedné oblasti.Tento odhad je potom rozdělen do čtyř oblastí a doplněna 5 obrazových bodů celé ohraničení.

Další příklad přiřazuje každé skupiny existující položky seznamu (rcWorkAreas) a aktualizuje zobrazení ovládacího prvku (m_WorkAreaListCtrl) k provedení efektu.

// 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

Pomocí CListCtrl

Koncepty

Ovládací prvky (MFC)