Veröffentlicht 9. Februar 200619 j 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
9. Februar 200619 j Das ist keine Frage von Button oder Listbox, sondern von Enabled/Disabled oder Visible/Invisible. Letzteres steuerst du mit ShowWindow.
10. Februar 200619 j 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 )
10. Februar 200619 j 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.
10. Februar 200619 j 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.
10. Februar 200619 j 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. Im zweiten Fall musst du beim Erzeugen den Style LVS_REPORT angeben.
10. Februar 200619 j 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
10. Februar 200619 j 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
10. Februar 200619 j 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.
10. Februar 200619 j 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?
10. Februar 200619 j 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?
10. Februar 200619 j 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
10. Februar 200619 j Bei mir isses Deutsch... aber die Sprache kann man so und so umschaltenEcht? 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.
10. Februar 200619 j 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
10. Februar 200619 j Autor und auf die zugreifen ? Weil irgendwie will InsertItem jetzt überhaupt nichts mehr reinschreiben (auch wenn keine Spalten drin sind...)
10. Februar 200619 j Wenn keine Spalten drin sind, kannst du nichts reinschreiben. Du musst vorher mindestens eine Spalte anlegen.
10. Februar 200619 j Autor m_CtrlLbAll.InsertColum(0, "Fehler); m_CtrlLbAll.InsertItem(0, "Keine Datensätze vorhanden."); Toll... jetzt kommt irgentwas von Debug Assertion Failed
10. Februar 200619 j 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.
10. Februar 200619 j 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()); } } }
10. Februar 200619 j 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.