TDM Geschrieben 9. Februar 2006 Geschrieben 9. Februar 2006 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 Zitieren
Klotzkopp Geschrieben 9. Februar 2006 Geschrieben 9. Februar 2006 Das ist keine Frage von Button oder Listbox, sondern von Enabled/Disabled oder Visible/Invisible. Letzteres steuerst du mit ShowWindow. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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 ) Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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. Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
Amstelchen Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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 Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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 Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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? Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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? Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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 Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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 Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 und auf die zugreifen ? Weil irgendwie will InsertItem jetzt überhaupt nichts mehr reinschreiben (auch wenn keine Spalten drin sind...) Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 Wenn keine Spalten drin sind, kannst du nichts reinschreiben. Du musst vorher mindestens eine Spalte anlegen. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 m_CtrlLbAll.InsertColum(0, "Fehler); m_CtrlLbAll.InsertItem(0, "Keine Datensätze vorhanden."); Toll... jetzt kommt irgentwas von Debug Assertion Failed Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
TDM Geschrieben 10. Februar 2006 Autor Geschrieben 10. Februar 2006 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()); } } } Zitieren
Klotzkopp Geschrieben 10. Februar 2006 Geschrieben 10. Februar 2006 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.