ListBox Eigenschaft? welches ItemIndex makiert ist?



  • moin,

    kurze frage wie heist die eigenschaft von listbox, die den wert zurück gibt, welches index makiert ist?

    hoffe das war die richtige frage, um am schnellsten an die lösung zu kommen 🤡

    gute nacht 😮



  • Hi,

    hab Gestern zufällig mit der ListBox gearbeitet 😉

    void __fastcall TForm1::ListBox1Click(TObject *Sender)
    {
     if(ListBox1->ItemIndex!=-1)
      {
        Edit1->Text = ListBox1->Items->Strings[  ListBox1->ItemIndex  ];
      }
    }
    //---------------------------------------------------------------------------
    

    Dieser Code müsste alles erklären..... kannst aber auch in der Hilfe zu
    ListBox nachlesen und zwar dort in den Eigenschaften von ListBox. 😋

    Es ist der ItemIndex, dieser ist -1 wenn nichs ausgewählt ist, sonst die Zeile.
    ItemIndex==0 ist die erste Zeile

    Man kann die Zeile auch über ItemIndex ansteuern.
    ItemIndex=2 heist die dritte Zeile markieren, aber Vorsicht, wenn die nicht da ist, gibts
    Absturz........

    Grüsse 👍



  • morgen,

    ja passt danke vielmals 🙂

    ich hab im objektinspektor gesucht, da taucht ItemIndex leider nicht auf 😡

    wünsche noch was



  • Hallo

    Nicht nur auf den Objektinspektor schauen, sondern auch in die Builder-Hilfe (Control auswählen und F1 drücken!) Im OI werden natürlich nur Eigenschaften angezeigt die zur Entwurfszeit sinnvoll sind. ItemIndex ist aber erst zur Laufzeit wichtig.

    bis bald
    akari



  • ja akari sollte mir das mal angewöhnen 🙄

    nur mal ne frage noch, kann man in einer listbox frames erzeugen oder gibt es ein anderes objekt dafür?



  • TListView ?!



  • hmm nicht wirklich, also was ich meine ist die art spalten/frames wie im rechten explorer fenster
    Name---------Größe----------Typ-------------Geändert am
    text.txt------1KB-----------Textdokument-----??.??.???? ??:??

    ist das machbar?

    hab mir schon gedacht das ich es mit noch einer listbox neben dran mache, aber dann muss ich beachten das die itemindex von liste 1 und 2 immer gleich neben einander stehen.

    gibts den so eine box die dieses schon beinhaltet?

    danke schön



  • Ich wiederhol mich nur ungern, aber in dem Fall

    TListView

    ( ViewStyle - vsReport )

    mfg, Micha!



  • sorry, habs mir noch mal angeschaut und die colums gesetzt 🙂

    danke schön



  • Die Columns? Die dürften Dich in einer ListBox nicht zum Ziel führen, bei dem was Du beschrieben hast. Da würde ich es eher mit TabWidth ausprobieren. Allerdings hat das auch Nachteile ...



  • Hallo,

    @Christian

    er meint die Columns des TListView



  • abend,

    danke für die vorschläge @all

    das klappt so weit mit dem listview objekt, naja das optische 🙂
    jetzt steh ich aber vor den nächsten hürde 😞

    ich weis wie ich auf strings in einer listbox zugreife, damit....

    AnsiString a1 =ListBox1->Items->Strings[0];
    

    in der listview geht das leider nicht, da strings keine eigenschaft von listview ist grrrr

    ich hab bisschen rumprobiert mit ListView->Items->...... hab mir die ganzen vorschläge angeschaut die er mir angibt.
    aber keines der bis jetzt versuchten eingenschaften gibt mir den text der einzelnen einträge aus.

    habs auch mit ListView->Columns->Items->...... auch kein erfolg 😞

    hat jemand ein rat und weist mir die richtung 😕



  • *sorry*, hab wohl doch zu vorschnell gemeckert 😉



  • Allgemein:

    ListView1->Items->Item[x]->Caption
    

    Markiertes Item herausfinden:

    ListView1->Selected->Caption
    


  • so, da bin ich wieder ...

    Wenn ich das richtig sehe, greift Rostfrei auf die erste Spalte zu. Für die zweite bräuchte man dann folgenden Code:

    ListView1->Items->Item[x]->SubItems->Strings[0];
    

    Entsprechend für die 3. Strings[1] etc.

    ... oder geht das auch einfacher?



  • also die beiden beispiele funktionieren 😋

    a->Edit1->Text = ListView2->Items->Item[0]->Caption;
    a->Edit2->Text = ListView2->Items->Item[0]->SubItems->Strings[0];
    a->Edit2->Text = ListView2->Items->Item[0]->SubItems->Strings[1];
    

    jetzt hab ich natürlich auch gleich mal probiert in der listview zur laufzeit was einzutragen 🕶

    Form1->ListView2->Items->AddItem("PC1",0)
    

    jetzt sagt er mir was von tlistitem erwartet und char erhalten......

    ich kenn int und string und char aber was hats mit dem tlistitem auf sich?
    bin ich mit der code zeile überhaubt richtig?
    den ein Add ohne dem Item hinten dran gibts auch, aber da will er keine weiteren parameter haben.



  • Hi,

    ListView1->Items->Item[x]->Caption  // Spalte 0 (sichtbar 1)
    
    TListItem *ListItem = ListView1->Items->Add();
    ListItem->SubItems->Add("Spalte 1"); //sichtbar Spalte 2
    ListItem->SubItems->Add("Spalte 2"); //usw.
    

    Steht aber auch alles in der Hilfe 😉

    mfg, Micha!



  • man man genau so stehts drin, also fast 😡

    so siehts aus und das funkt

    Form1->ListView2->Items->Item[i]->Caption;  // Spalte 0 (sichtbar 1)
    
    TListItem *ListItem = Form1->ListView2->Items->Add();
    ListItem->Caption = "PC1" + IntToStr(i);
    ListItem->SubItems->Add("Standort"); //sichtbar Spalte 2
    ListItem->SubItems->Add("Rufnummer"); //usw.
    ListItem->SubItems->Add("Passwort");
    

    😃
    big thx



  • moin,

    ich bin mit meinem code auf ein kleines problemm gestoßen 😕

    if (ListView2->Selected->Index == 0);
     {
     AnsiString a1 =ListView2->Items->Item[0]->Caption;
           TForm3* a = new TForm3(Application);
    a->Show();
    a->Caption ="Konfiguration von "+ a1;
    a->Edititem->Text = "0";
    a->Editfo->Text = "az1";
    a->Edit1->Text = ListView2->Items->Item[0]->Caption;
    a->Edit35->Text = ListView2->Items->Item[0]->SubItems->Strings[0];
    a->Edit3->Text = ListView2->Items->Item[0]->SubItems->Strings[1];
     a->Edit2->Text = ListView2->Items->Item[0]->SubItems->Strings[2];
    }
     if (ListView2->Selected->Index == 1);
     {
     AnsiString a1 =ListView2->Items->Item[1]->Caption;
           TForm3* a = new TForm3(Application);
    a->Show();
    a->Caption ="Konfiguration von "+ a1;
    a->Edititem->Text = "1";
    a->Editfo->Text = "az2";
    a->Edit1->Text = ListView2->Items->Item[0]->Caption;
    a->Edit35->Text = ListView2->Items->Item[0]->SubItems->Strings[0];
    a->Edit3->Text = ListView2->Items->Item[0]->SubItems->Strings[1];
    a->Edit2->Text = ListView2->Items->Item[0]->SubItems->Strings[2];
    }
    .
    .
    .
    .
    .
    

    wen ich ohne die if abfrage, nur mit einer form arbeite gehts.
    mit if abfrage bricht er zusammen und das programm geht garnicht mehr weiter, muss zurücksetzen 😡

    ich denke mal, daß ich die if abfrage auf etwas mache, was nicht den richtigen wert, den ich eigentlich erwarte zurückgibt hmm..
    mit ItemIndex mekert er auch nicht! macht aber das gleiche problem..

    ich hab das erst mal stehen lassen und etwas weiter den vorgang durchgegangen nur mit einer ausgabe.

    auf der instans der form gibt es ein button, mit dem ich die eigetragenen daten, in die gleiche listview und index zurück setzen möchte.

    das machte er aber nicht, er schreibt eine zeile dazu, hab auch schon verschiedene code beispiele versucht das ist mein letzter

    Form1->ListView2->Items->Item[StrToInt(Edititem->Text)];//->Caption;  // Spalte 0 (sichtbar 1)
    
    TListItem *ListItem =
        Form1->ListView2->Items->Insert(Form1->ListView2->Selected->Index);
    ListItem->Caption  = Edit1->Text;
    ListItem->SubItems->Add(Edit35->Text); //Add(Edit35->Text); //sichtbar Spalte 2
    ListItem->SubItems->Add(Edit3->Text); //usw.
    ListItem->SubItems->Add(Edit2->Text);
    
    Close();
    

    😮 gute nacht, hoffe doch bis morgen 😋



  • Hi,

    was isn TForm3 ??

    Das Formular "a" scheint ja schon zu existieren, oder?! In dem Fall kannst du TForm3* a = new TForm3(Application); weglassen und gleich a->Show(); ausführen.

    Setz aber mal nen Breakpoint in eine der If-Anweisungen und rufe diese dann auf in dem du das jeweilige Item im ListView markierst. Dann schau dir an was innerhalb deiner Routine passiert.

    mfg, Micha!


Anmelden zum Antworten