CListBox zeigt nichts an



  • Hallo!
    Folgender Code:

    CRect rect;
    dlgArtikelHinzu.m_sortiment2.Create
    (LBS_HASSTRINGS,rect,this,IDC_SORTIMENT2);
    dlgArtikelHinzu.m_sortiment2.AddString("Test1");
    dlgArtikelHinzu.m_sortiment2.AddString("Test2");
    dlgArtikelHinzu.m_sortiment2.AddString("Test3");
    int zahl=dlgArtikelHinzu.m_sortiment2.GetCount();
    CString anzahl;
    anzahl.Format("%i",zahl);
    MessageBox(anzahl);

    In dem Dialogfeld dlgArtikleHinzu habe ich eine Listbox namens m_sortiment2 und möchte diese füllen. Leider zeigt sie überhaupt nichts an. Die GetCount()-Methode liefert aber die korrekte Anzahl (3) der Einträge zurück, also müssten die String doch dort auch angekommen sein, oder? Wer weiß Rat?



  • Hmm, UpdateData(...); kanns eigentlich nich sein...
    Kannst du statt Create nicht einfach die Listbox im Dialog
    Editor hinzufügen, und dann ne Membervariable erstellen?

    Devil



  • genau so habe ich es gemacht. m_sortiment2 ist die membervariable. wenn ich nicht Create() aufrufe, bekomme ich beim Zugriff auf die Listbox (durch die membervariable) immer einen Laufzeitfehler..



  • Du brauchst kein Create() aufrufen bei einer membervariable...

    Devil



  • wenn ich create ausklammere, gibts aber den erwähnten Laufzeitfehler. wie kann ich den denn vermeiden? ist mein code dafür noch nicht richtig so? durch int ergebnis=dlgArtikelHinzu.DoModal(); rufe ich nach meinem obigen code das andere Dialogfeld auf. liegt hier der hund begraben?



  • Du solltest den Code in die OnInitDialog von dlgArtikelHinzu
    schreiben, ohne das Create.

    Devil



  • die listeneinträge sind leider nicht statisch. das dialogfeld, welches das angesprochene (dlgArtikelHinzu) aufruft, enthält ein objekt einer listenklasse. dessen inhalt möchte ich in dem neuen dialogfeld anzeigen lassen. in dem neuen dlgfeld kennt er aber mein listen-objekt nicht. also wollte ich die listbox schon vor ihrem aufruf füllen. oder kann ich dlgArtikelHinzu mein objekt der listenklasse bekannt machen? public habe ich es schon deklariert. reicht scheinbar noch nicht...



  • Public nützt da nix.
    Du könntest versuchen das du die Listbox übergibst.
    So mach ich das in einem Programm auch.
    CListBox lbox;
    in lbox alles reinhauen,
    und dann _vor_ domodal()
    mdlgclass.m_listbox = &lbox;

    Devil



  • Leider:

    error C2582: 'CListBox' : 'Operator =' ist nicht verfuegbar

    hilfe!!!!



  • dann gleich vorher es ab.
    und dann veränder es. so klappts bei mir...

    Devil



  • Original erstellt von devil81:
    **dann gleich vorher es ab.
    und dann veränder es. so klappts bei mir...

    Devil**

    ..das konnte ich jetzt nicht nachvollziehen...
    kannste nochmal erklären?



  • nlistbox = &dlg.m_listbox;
    nlistbox.addstring(..)

    Devil



  • Hab ich versucht. Ich kriege aber schon wieder die selbe Fehlermeldung: CListBox:Operator= ist nicht verfügbar! Ich danke dir für deine Geduld aber irgendwie muss es doch klappen...



  • Du kannst ein ListCterl net vor seiner erstellung mit werten füllen, gibt dann ne fehlermeldung bzw er zeigt sie net an, wie bei dir. Du must das wohl oder übel jeden eintrag in nem String speichern und mit ner schleife wieder in das andere reinladen.



  • Also ich hatte auch mal so einen Fehler.
    Ich hab die Daten an eine CString Objekt übergeben und dann bei OnInitDialog() die CString in die ListBox geschrieben.

    Vieleicht hilft es ja....


Anmelden zum Antworten