Zeilen einrücken in einer CListBox
-
Hallo Leute,
Ich lasse in der CListBox Audiodateinamen anzeigen. Dahinter soll eine Zeitangabe stehen. Problem ist nur das die Schriftbreite in jeder Zeile anders sein kann.
Beispiel:
MeinLied.mp3 ************* 3:20
EinAnderesLied.wave ******** 1:25
UndNochEinLied.mp3 ****** 5:33Wie bekomme ich das jetzt richtig ausgerichtet?
PS: Die * sind Leerzeichen. Wenn ich nur Leerzeichen eingebe macht der
mir die beim Senden auto. weg.Danke euch schonmal.

-
Mal ein ganz anderer Vorschlag.
Sieh dir mal CListCtrl an, dann kannst du mehrere Spalten machen und alles ist schön sortiert.
-
Hi,
Hab mir die Klasse mal angeschaut. Sie ist einfacher zu benutzen geb ich zu.

Aber ich hab noch kein ergebnis erzielt, bzw. schon aber nicht so wie ich wollte.Und zwar haben die Texte eine Schriftart. Problem ist, manche Zeichen brauchen weniger Platz manche mehr, und ich wollt die Zeile im ganzen markieren und nicht nur den Namen und die Zeit ist dann unmakiert. Wollte schon alles in einem makiert haben. Es reicht mir schon wenn nur die Zeiten direkt untereinander stehn.
-
Spalten erzeugen:
// Spalten einfügen m_listNations.InsertColumn(0,"",LVCFMT_CENTER,0); m_listNations.InsertColumn(1,"#",LVCFMT_CENTER,30); m_listNations.InsertColumn(2,"Code",LVCFMT_CENTER,130); m_listNations.InsertColumn(3,"Nation",LVCFMT_CENTER,329);Werte eintragen:
... // alle Einträge löschen m_listNations.DeleteAllItems(); CString sText; // iCount = Gesamtanzahl der Datensätze for (int iItem=0;iItem<iCount;iItem++) { m_listNations.InsertItem(LVIF_TEXT|LVIF_STATE, iItem, sText, (iItem%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,0, 0); for (int iSubItem=1;iSubItem < 4;iSubItem++) { switch(iSubItem) { case 1: sText.Format("%i", iItem+1); break; case 2: sText = m_pNationsSet->m_sCode; break; case 3: sText = m_pNationsSet->m_sNation; break; } m_listNations.SetItemText(iItem, iSubItem, sText); } m_pNationsSet->MoveNext(); }ganze Zeile markieren:
m_listNations.SetExtendedStyle(LVS_EX_FULLROWSELECT);
-
Super, hat echt klasse geklappt!
Danke nochmal!

-
Da war also doch noch einer zu überzeugen.

Dass die erste Spalte die Breite 0 hat, das hat auch irgendeinen Grund. Nur leider hab ich den vergessen, aber ich weiß auf jeden Fall, dass ich mir damals als ich den Code in meinem Programm verfasst habe was dabei gedacht hab.Vielleicht was das jemand anders, würde mich jetzt glatt selber interessieren.
