MFC - Verwendung von CListView REPORT Style

Nukleo

Mitglied
Hi Leutz,

arbeite hier gerade an meiner ersten visuellen C++ Aplikation und bekomme einfach nicht die richtige Ansicht hin. CListView REPORT-Style scheint mir schon das richtige zu sein, doch wie erzeuge ich das. Bisher sieht der nichtfunktionierende Code paritell wie folgt aus (und nicht gleich loslachen;-)

Code:
void CMFC_BankView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
	CListCtrl & ListCtrl = GetListCtrl( );
	ListCtrl.InsertColumn(0, _T("First Name"), LVCFMT_LEFT, 100);
	ListCtrl.InsertColumn(1, _T("Last Name"), LVCFMT_LEFT, 100);


	ListCtrl.InsertItem(0,"James");
	 ListCtrl.InsertItem(1,"Bond");

	 ListCtrl.InsertItem(0,"Mickey");
	 ListCtrl.InsertItem(1,"Maus");
 ...

Ist natürlich nur ein Ausschnitt. Kann mir mal jemand den Code so zurechtbiegen, dass mir im Hauptfenster diese Zwei Spalten mit den beiden Einträgen angezeigt wird.

Danke
Beste Grüße
Nukleo
 
Hi Nukleo,

du willst "Bond" bzw. "Maus" in die rechte Spalte bekommen?
Hab mal sowas mit der LV_ITEM-Strukur gemacht. Ist schon ne weile her.
Du musst das SubItem besetzen und mit SetItemText einfügen.

bei mir sah das so aus (sorry, hab das mit dem Formatieren
nicht hinbekommen) :)

Code:
CListCtrl* pLC = (CListCtrl*) GetDlgItem(IDC_LIST1);

int nCol = 1;
 
	const char* ItemArray[5];
	ItemArray[0] =	"eins";
	ItemArray[1] =	"zwei";
	ItemArray[2] =	"drei";
	ItemArray[3] =	"vier";
	ItemArray[4] =	"fünf";

	LVITEM lvItem;

	lvItem.mask = LVIF_TEXT | LVIF_STATE;
	lvItem.state = LVIS_SELECTED;

for (int i = 0;i<5;i++)
{	lvItem.pszText = "zeile";
	lvItem.iItem = i;
	lvItem.iSubItem = 0;

	pLC->InsertItem(&lvItem);
	pLC->SetItemText(i, nCol, ItemArray[i]);
}
 
Hm, danke, aber ist nicht ganz das was ich wollte. Mit den Spalten hast Du schon richtig verstanden, doch beziehst du Dich soweit ich das schon verstehen kann auf ein Listenfeld in einem Dialog. Mein Anliegen ist, ähnlich der rechten Seite im Explorer, eine mehrspaltige Liste zur Darstellung verschiedener Member von Instanzen einer Klasse und zwar im Hauptfenster.
 
Für die SubItems (also die Einträge in den Spalten weiter rechts, vereinfacht gesagt), kannst du SetItemText() nehmen:
Code:
ListCtrl.InsertItem(0,"James");
ListCtrl.SetItemText(0,1,"Bond" ); // die 1 ist der "Index der Spalte"
Das mit den Spalten und Subitems ist etwas komplizierter, als ich hier darstelle, weil Spalten auf verschoben werden können und auch nicht durchgehend nummeriert sein müssen, aber für den Anfang tut es das erstmal. Wird schon schiefgehen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück