GetColumnWidth und SetColumnWidth Problem
-
Hi,
hab da ne kleine Wissenslücke ^^. Vll kann mir wer sagen wie ich im folgenden Code in der 2. Spalte sagen kann das wenn der Inhalt der Spalten kleiner ist als der Spaltenheader er auf den Spaltenheader vergrößert und wenn der Spalteninhalt größer ist als der Spaltenheader er auf den Spalteninhalt vergrößert?
. . . m_Datenliste.InsertColumn(0,"Marke"); m_Datenliste.InsertColumn(1,"Modell"); while(!r->IsEOF()) { r->GetFieldValue("Marken.Name",val); CString insert = val.pbVal; int q = m_Datenliste.InsertItem(0,insert); insert = ""; val.Clear(); val =""; r->GetFieldValue("Modell",val); insert = val.pbVal; m_Datenliste.SetItemText(q,1,insert); insert = ""; val.Clear(); val =""; r->MoveNext(); m_Datenliste.SetColumnWidth(0,LVSCW_AUTOSIZE); m_Datenliste.SetColumnWidth(1,LVSCW_AUTOSIZE); } . . .Also auf den Spaltenheader vergrößern geht mit
m_Datenliste.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);, dass weiss ich, aber den Rest weiss ich jetzt nicht.
Wäre nett wenn mir wer helfen könnt...
Und wie kann ich den Header nicht zentriert sondern links- oder rechtsbündig anzeigen lassen? Wenn ich
m_Datenliste.InsertColumn(1,"Modell",LVCFMT_RIGHT,0);schreibe dann macht er nur den Inhalt der Spalten rechtsbündig aber nicht den Header.
-
Also ich hab es so probiert, dass ich die Spalten des CListCtrl in einer Schleife erzeugt habe:
const CString strTitles[] = {"Spalte_1", "Spalte_2", "Spalte_3"};
// Anzahl der Spalten
const int iColumns = 3;
// Breite der einzelnen Spalten in Zeichen
const int iWidth[] = {18,12,12}; // das sind nur Beispielwerte// Information zum aktuellen Font
TEXTMETRIC tm;CClientDC dc(this);
int aveCharWidth=0;if(dc.GetTextMetrics(&tm)==TRUE)
// durchschnittliche Breite eines Zeichens des aktuellen Fonts --> für korrekte Bestimmung der Spaltenbreiten:
aveCharWidth = tm.tmAveCharWidth;// Titeltexte und Spaltenbreite in Pixel setzen
for(int i=0;i<iColumns;i++){
// alle Spalten mit den Überschriften einfügen: 1. + 3. Spalte linksbündig, 2. Spalte zentriert
if(i==1)
m_ctrListe.InsertColumn(i,strTitles[i],LVCFMT_CENTER,-1,i);
else
m_ctrListe.InsertColumn(i,strTitles[i],LVCFMT_LEFT,-1,i);
// Spaltenbreiten verändern:
m_ctrListe.SetColumnWidth(i,iWidth[i]*aveCharWidth);
}Hoffe, es hilft.

Gruß, seppelina
-
Reschpekt ^^, dein 2. Beitrag in diesem Forum und gleich ein so guter
. Ja denke schon das mir das hilft...matsch sanks
