Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[MFC] Listbox anzeigen

Empfohlene Antworten

Veröffentlicht

Hallo, ich habe ein Frame in dem eine versteckte Listbox ist.

Jetzt wollte ich fragen wie ich es anstelle dass die Listbox bei Klick auf einen Button sichtbar wird.

Ich hatte mir zwar schon das ganze für Buttons angesehen, aber es scheint ich brauch da ein Control auf die Listbox oder ?

Wenn ja würd ich gern wissen wie die Funktion heißt, weil ich find in der MSDN nicht wirklich was brauchbares.

Danke im Vorraus

TDM

  • Autor

hmm danke, das ging

Nächste Frage zum Anzeigen in der Listbox:

Wie kann ich die in Spalten aufteilen und dann in die einzelnen Zellen schreiben ? (ich kenn von VBA her list() aber die scheint es hier nicht zu geben bzw. hab ich die nicht gefunden). Ich habe bisher immer einen String mit "\t" probiert aber da kommt nur ein Viereck

und wie lösch ich dann eine einzelne Zeile ohne gleich die ganzen Zellen durchzugehen ? (cols() und rows() gibts hier nämlich auch nicht :( )

Listboxen haben keine Spalten und damit auch keine Zellen. Du kannst über den Style LBS_USETABSTOPS Tabstops einrichten, aber echte Spalten sind das nicht.

Wenn du Spalten und Zugriff auf einzelne Zellen willst, musst du ein List Control im Report-Style benutzen.

  • Autor

und wie setz ich das auf Report-Style ? ich hab bisher zwar die Funktion CListCtrl::SetView gefunden aber ich weis nicht was ich als parameter übergeben muss...

In der MSDN steht nur:

Parameter

iView

The view to be selected.

LVS_ICON: Shows large icons for each item in the control

LVS_SMALLICON: Shows small icons for each item in the control

LVS_LIST: Shows a list of items in the control with a small icon for each item

LVS_REPORT: Shows a "Details" of the items where extended item information can be viewed

wobei letzteres sicher das gewünschte ist, da mehrspaltig.

s'Amstel

  • Autor
Hast du eine Ressource oder erzeugst du das Steuerelement im Code?

Im ersten Fall kannst du das über die Eigenschaften des Steuerelements im Ressourceneditor einstellen.

Und wo ?

Ich krieg jetzt den Fehler, dass SetView kein Element von CListCtrl ist O.o

hab ich vergessen etwas einzubinden

btw: danke Amstelchen

Und wo ?
Welche Version und Sprache von VC?

Ich krieg jetzt den Fehler, dass SetView kein Element von CListCtrl ist O.o

To use this API, you must provide a manifest specifying Comclt32.dll version 6.0

Minimum operating systems: Windows XP

Aber du brauchst SetView nicht.

  • Autor
Welche Version und Sprache von VC?

Aber du brauchst SetView nicht.

VS.Net

Ich brauch das nicht ?

gibts da eine andere Funktion oder meinst du, dass du es nicht im quelltext ändern würdest?

VS.Net

Welche Version? 2002? 2003? 2005?

Welche Sprache? Deutsch? Englisch?

Ich brauch das nicht ?

gibts da eine andere Funktion oder meinst du, dass du es nicht im quelltext ändern würdest?

Nein, davon rede ich doch die ganze Zeit. Du brauchst doch nur die Detailansicht, warum verbeißt du dich in eine Funktion, die die Ansicht zur Laufzeit umschalten kann, wenn du sie nur einmal beim Start zu setzen brauchst?
  • Autor

2002

Bei mir isses Deutsch... aber die Sprache kann man so und so umschalten

Nein, davon rede ich doch die ganze Zeit. Du brauchst doch nur die Detailansicht, warum verbeißt du dich in eine Funktion, die die Ansicht zur Laufzeit umschalten kann, wenn du sie nur einmal beim Start zu setzen brauchst?

Weil ichs nicht gefunden hab, wo man es umstellt *g*

Außerdem wär es interessant falls ich mal nen Programm schreiben muss, welches dieses während der Laufzeit macht

Bei mir isses Deutsch... aber die Sprache kann man so und so umschalten
Echt? Du kannst die Sprachversion deines Visual Studio umstellen? Sagst du mir, wie?

Eine deutsche Version habe ich hier nicht, in der englischen Version heißt die Eigenschaft "View". Es ist die einzige Eigenschaft des List Control mit 4 Wahlmöglichkeiten.

  • Autor
Echt? Du kannst die Sprachversion deines Visual Studio umstellen? Sagst du mir, wie?

Eine deutsche Version habe ich hier nicht, in der englischen Version heißt die Eigenschaft "View". Es ist die einzige Eigenschaft des List Control mit 4 Wahlmöglichkeiten.

Extras -> Umgebung -> Internationale Einstellungen -> Englisch

Ahh... ich habs gefunden *an Kopf klatsch*

Und wie kann ich da jetzt Spalten reinmachen und auf die zugreifen ?

ich hab nur setColoum

  • Autor


m_CtrlLbAll.InsertColum(0, "Fehler);

m_CtrlLbAll.InsertItem(0, "Keine Datensätze vorhanden.");

Toll... jetzt kommt irgentwas von Debug Assertion Failed :(

Toll... jetzt kommt irgentwas von Debug Assertion Failed :(
Je genauer die Fehlerbeschreibung, desto besser die Hilfe. Bloß weil dir die Meldung nichts sagt, kann sie anderen hier für die Diagnose doch sehr hilfreich sein.

Also bitte: Vollständige Fehlermeldung posten. Außerdem wäre gut zu wissen, wo dieser Code steht.

  • Autor
Debug Assertation Failed!

Program: D:\src\C\mfc\AzubiTestMFC_I\Debug\AzubiTestMFC_I.exe

File: winctrl2.cpp

Line: 599

...

Code der Funktion:


void CAzubiTestMFC_IDlg::On_BnOutput_Clicked()

{	


	m_CtrlLbAll.ShowWindow(SW_SHOWNORMAL);

	if (CPerson::s_nCount == 0) 

	{

		m_CtrlLbAll.InsertColumn(0, "Fehler", LVCFMT_LEFT, 289);	

		m_CtrlLbAll.InsertItem(0,"Es wurden keine Datensätze eingegeben."); [COLOR="Red"]// <-- DA[/COLOR]

	}

	else

	{

		m_CtrlLbAll.InsertColumn(0, "Vorname", LVCFMT_LEFT, 72);	

		m_CtrlLbAll.InsertColumn(1, "Name", LVCFMT_LEFT, 72);	

		m_CtrlLbAll.InsertColumn(2, "Gewicht", LVCFMT_LEFT, 72);	

		m_CtrlLbAll.InsertColumn(3, "ÜNÜ", LVCFMT_LEFT, 72);

		CPerson Person(*m_pPerson);

		Person = (m_pPerson -> getFirst());

		m_CtrlLbAll.DeleteAllItems();


		m_CtrlLbAll.InsertItem(Person.getID(), Person.getFName());

		while (Person.getNext() != NULL)

		{

			Person = *(Person.getNext());

			m_CtrlLbAll.SetItemText(Person.getID(), 1, Person.getFName());

			m_CtrlLbAll.SetItemText(Person.getID(), 2, Person.getGewicht());

			m_CtrlLbAll.SetItemText(Person.getID(), 3, Person.getBMI());

		}

	}

}

File: winctrl2.cpp

Line: 599

Da steht bei mir:

void CListCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
ASSERT(FALSE);
}[/code]

Vermutlich hast du dein List Control auf OwnerDraw gestellt, als du mit den Eigenschaften experimentiert hast. Bei einem OwnerDraw-List Control musst du von CListCtrl ableiten und DrawItem überschreiben.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.