Sütun genişliğini otomatik olarak yeniden boyutlandırmak için CListCtrl
nasıl yapabilirim? Genellikle, listedeki bir öğe çok uzun sürerse, arka uç görünümden kaybolur ve kullanıcı el ile karşılık gelen sütunun genişliğini yeniden boyutlandırmak zorundadır. Bunu kod ile yapmanın bir yolu var mı?Otomatik yeniden boyutlandırma sütun genişlikleri CListCtrl
cevap
kolaydır:
for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i)
pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
Bu sütunlar optimize eder.
"Kaydırmak Yok" seçeneğiniz var mı? Varsayılan olarak ("Kaydırmak Yok" seçeneği kapalı), bir öğe çok uzun sürerse kaydırma çubuğu görünür.
Rapor modunda liste denetimi anlamına mı geliyorsunuz? Maalesef sütunları otomatik olarak yeniden boyutlandırmanın bir yolu yoktur. Ne yapabilirim (bazı yerlerde yaptığım şey), öğeleri girerken sütunların genişliğini hesaplar, ardından WM_SIZE işlemlerini gerçekleştirir ve sütunları yeniden boyutlandırır. Ancak bu, kullanıcının kaybolmasıyla ilgili değişikliklere neden olur; bu nedenle, kullanıcı herhangi bir değişiklik yaptıysa, yeniden boyutlandırılmadıysa izleme gibi daha iyi bir algoritmaya ihtiyacınız olabilir. Bir UX perspektifinden çok hoş değil, yalnızca davranışın UI'nin geri kalanının bağlamında anlam kazandığı belirli durumlarda kullanın. otomatik sütunları yeniden boyutlandırma
Evet, tam olarak ne demek istedim. Cevabınız için teşekkürler, uygun bir algo elde edemiyorsam, manuel olarak yeniden boyutlandırmak için OnSize() işlemlerini gerçekleştireceğim ve okuyucuyu pencereyi yeniden boyutlandırmasını isteyeceğim. – Isuru
Hey, ben denedim ve iyi çalışıyor gibi görünüyor :) :) – Isuru
Küçük bir soru dwo, HeaderControl hakkında hiç duymadım. Tam olarak nedir ??? Çok teşekkürler! – Isuru
Başlık denetimi, liste denetiminin üst kısmıdır ve içindeki sütun başlıklarıdır. – dwo