zugriff auf listbox objekt



  • hi, ich habe eine listbox mit inhalt gefüllt. nun meine frage: wie kann ich das ausgewählte listbox objekt meiner setz methode des headers zuweisen bzw wie kann ich auf das ausgewählt objekt zugreifen?

    mein bisheriger ansatz:

    String Name;
    Schueler1.SetSchueler(lbSchuelerliste->Items->Name.c_str());
    


  • if (lbSchuelerliste->ItemIndex != -1) {
    		Schueler1.SetSchueler(lbSchuelerliste->Items->Strings[lbSchuelerliste->ItemIndex].c_str());
    	}
    


  • viel dank für die schnellen antworten. hilft mir wirklich sehr. bin momentan bei der abiturvorbereitung im fach it und super forum 🙂



  • Du kannst auch die Listbox als TObject Pointer an deine Funktion via Parameter übergeben, als TListbox casten und innerhalb der Funktion den Inhalt dynamisch zuweisen und den Item Index setzen. Einfacher natürlich direkt als TListbox Pointer übergeben aber mit der erst genannten Methode kannst du dir anschauen wie die VCL Welt funktioniert.
    Dies nur als Ergänzung falls du die Funktionalität etwas erweitern möchtest.
    Ein Beispielcode kann ich dir gerne zeigen. Einfach melden



  • leider hab ich noch ein weiteres problem mit diesem programm. ich will für 7 Schüler den namen in edit felder übergeben die beim nach und nach erscheinen sollen.
    leider funktioniert das nicht. muss ich hierbei mit pointer arbeiten oder ist das irgendwie zu vermeiden. bin nämlich nicht so vertraut mit den pointern.

    die variable hilf ist hierbei global deklariert

    void __fastcall TfrmMain::btnAnmeldenClick(TObject *Sender)
    {
      if (lbSchuelerliste->ItemIndex != -1)
      {
            for(hilf; hilf++; hilf!=7)
            {
                    switch (hilf)
                    {
                            case 0:
                            {
                            Schueler1.SetSchueler(lbSchuelerliste->Items->Strings[lbSchuelerliste->ItemIndex].c_str());
                            edtSchueler1->Text=Schueler1.GetSchueler();
                            }
                            break;
                            case 1:
                            {
                            Schueler2.SetSchueler(lbSchuelerliste->Items->Strings[lbSchuelerliste->ItemIndex].c_str());
                            edtSchueler2->Visible=true;
                            cbFahrt2->Visible=true;
                            cbFahrt2->Visible=true;
                            edtSchueler1->Text=Schueler1.GetSchueler();
                            }
                            break;
                    }
            }
      }
    
    }
    


  • hat sich bereits von selbst gelöst. habe den anfängerfehler in der zählschleife gefunden



  • Du hattest die Bedingung mit dem Inkrement vertauscht. Warum ist die Zählvariable global? Hat das einen bestimmten Grund? Es wird auch nicht deutlich welchem Wert ihr zugewiesen wurde. Nehme am besten gleich von Anfang an von der globaler Variablendeklaration abstand. Deklariere sie lieber als Klassenmember deiner Hauptprogrammklasse. Den Startwert für die for Schleife kannst/solltest du direkt initialisieren:

    for(int i = 0; i < 7; i++)
    {}
    

Log in to reply