Aracılığıyla paylaş


Liste denetimleri alanlarda çalışma yürüten

Varsayılan olarak, liste denetimi tüm öğeleri standart kılavuz biçimde düzenler.Ancak, çalışma alanları, liste öğelerini dikdörtgen gruplar halinde düzenler, başka bir yöntem desteklenmiyor.Liste görünümü denetimleri kullanarak çalışma alanlarına uygulayan bir liste denetimine görüntü için bkz: Windows SDK.

[!NOT]

Çalışma alanları, yalnızca liste denetimi simgesini veya küçük simge modunda olduğunda görünür.Görünümü, rapor veya liste moduna geçtiyseniz, ancak geçerli çalışma alanları korunur.

Çalışma alanları boş bir kenarlık (sol, üst ve sağ öğeleri üzerinde) veya normalde olmalı biri görüntülenecek bir yatay kaydırma çubuğu neden kullanılır.Başka bir yaygın kullanım için öğeler taşınmış bırakılan veya birden çok çalışma alanlarına oluşturmaktır.Bu yöntemle alanları farklı anlamları olan tek bir görünüm oluşturabilirsiniz.Kullanıcı daha sonra öğeleri farklı bir alana yerleştirme kategorilere.Bunun bir örneği olan bir alan okuma/yazma dosyaları için başka bir alan salt okunur dosyalar için dosya sisteminin bir görünümü olacaktır.Dosya öğesi salt okunur alanına taşıdıysanız, onu otomatik olarak salt okunur olur.Bir dosyayı salt okunur alandan okuma/yazma alanına taşıdığınızda, okuma/yazma dosya olun.

CListCtrloluşturma ve yönetme liste denetimi çalışma alanlarında birçok üye işlevler sağlar.GetWorkAreas ve SetWorkAreas almak ve bir dizi set CRect nesneleri (veya RECT yapıları), şu anda uygulanan çalışma alanları listesini denetlemek için saklamak.Buna ek olarak, GetNumberOfWorkAreas çalışma alanlarına liste denetimi için geçerli sayısını alır (varsayılan olarak sıfır).

Öğeleri ve çalışma alanları

Çalışma alanı oluşturduğunuzda, çalışma alanının içinde bulunan öğeler, üyeleri haline gelir.Benzer şekilde, bir öğeyi çalışma alanına taşınırsa taşınmış olabilir çalışma alanının üyesi olur.Öğenin herhangi bir çalışma alanı içinde bulunmayacak, otomatik olarak ilk (dizin 0) çalışma alanının üyesi olur.Bir madde ve belirli bir çalışma alanı yerleştirilmiş olan oluşturmak istiyorsanız, öğe oluşturmak ve sonra taşımak istediğiniz çalışma alanına yapılan bir çağrıyla gerekir SetItemPosition.Aşağıdaki ikinci örnekte, bu teknik gösterilmiştir.

Aşağıdaki örnek dört çalışma alanlarına uygular (rcWorkAreas), 10 piksel genişliğinde etrafındaki her çalışma alanında liste denetimi ile eşit boyutta (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);    

Arama ApproximateViewRect bir bölgede tüm öğeleri görüntülemek için gerekli toplam alanının tahmini yapıldı.Bu tahmin sonra dört bölgeye ayrılır ve 5 piksel geniş kenarlıklı azsa.

Bir sonraki örnek, her gruba varolan liste öğelerini atar (rcWorkAreas) ve denetimin görünümü yeniler (m_WorkAreaListCtrl) etkisi tamamlamak için.

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

Ayrıca bkz.

Başvuru

CListCtrl kullanma

Kavramlar

Denetimleri (mfc)