ListBox Eigenschaft? welches ItemIndex makiert ist?



  • 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!



  • tach,

    RandomAccess85 schrieb:

    was isn TForm3 ??

    das ist eine schon existierende form mit editfeldern und buttons

    RandomAccess85 schrieb:

    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.

    hmm also so weit ich das verstanden habe, ist a eine instans von der form3, die wird erst zurlaufzeit erzeugt.

    aber ich hab die if abfrage falsch gemacht, ich 🤡

    so geht das jetzt

    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[1]->Caption;
    a->Edit35->Text = ListView2->Items->Item[1]->SubItems->Strings[0];
    a->Edit3->Text = ListView2->Items->Item[1]->SubItems->Strings[1];
     a->Edit2->Text = ListView2->Items->Item[1]->SubItems->Strings[2];
    }
    

    das semikolon in der if zeile hat gestört grrrr

    das mit dem hinzufügen haut aber leider immer noch nicht hin 😞
    wie kann ich den den die daten, vom makierten eintrag den ich geöffnet habe, wieder in die richtige zeile zurückschreiben?

    😕



  • Wieso schreibst denn nich einfach Form3->Show; Form3->Edititem->Text = "0"; usw. ?

    ListView2->Items->Item[1]->Caption = a->Edit1->Text;
    
    TListItem *ListItem = ListView2->Items->Add();
    ListItem->SubItems->Add(a->Edit35->Text);
    ListItem->SubItems->Add(a->Edit3->Text);
    ListItem->SubItems->Add(a->Edit2->Text);
    

    so, kannst die Daten zurückschreiben, aber du musst vorher die "alte" Zeile löschen. Geht vielleicht aber auch eleganter 😃

    mfg, Micha



  • RandomAccess85 schrieb:

    Wieso schreibst denn nich einfach Form3->Show; Form3->Edititem->Text = "0"; usw. ?

    weil Form3 nur die grüsst form ist wo ich die funktionen der buttons festgelegt habe, Edititem gebe ich an die instans weiter damit wie weis welches ItemIndex angesprochen würde aus der listview.

    Form3 wird mit den instansen merfach geöffnet, für jeden eintrag in der listview seperat.

    jetzt kannst du dir bestimmt vorstellen daß ich listview beim schliessen der instans nicht clearen kann, weil wenn da drei einträge stehen ich nicht alle auf einmal ablegen kann, hab ja immer nur eins offen.



  • Ja, hab ich kapiert, aber trotzdem kannst du den oben geschriebenen Code zum wiedereinfügen verwenden 😉 !

    mfg, Micha



  • ja sorry du meintest zeile löschen 👍

    habs so versucht vor dem code fürs setzen/add....

    Form1->ListView2->Items->Item[StrToInt(Edititem->Text)]->Delete();
    

    auch noch in anderer schreibweise, passt irgendwie nicht bringt zugriffsverletzung 😡



  • so gehts aber juhhhhhuuuuuu 😃

    Form1->ListView2->Items->Item[StrToInt(Edititem->Text)]->Delete();
    
     Form1->ListView2->Items->Item[StrToInt(Edititem->Text)]->Caption;
    
    TListItem *ListItem = Form1->ListView2->Items->Add();
    ListItem->Caption = Edit1->Text;
    ListItem->SubItems->Add(Edit35->Text);
    ListItem->SubItems->Add(Edit3->Text);
    ListItem->SubItems->Add(Edit2->Text);
    
    Close();
    

    danke schön

    jetzt tauch wieder mal was auf was nicht sein sollte grrr

    wen ich die obere zeilen öffne und dann wieder ablege, löscht er diese und setzt sie aber nicht an die gleiche stelle.
    sondern die nicht geöffnete springt an die erste stelle und die gespeicherte zeile wird unten dran gehängt 😞

    mist immer diese neben effekte grrr
    würde ja schon gerne das er die zeile dort ablegt wo er sie aufgerufen hat und nicht drunter setzt 💡 😕



  • hawkdz schrieb:

    jetzt tauch wieder mal was auf was nicht sein sollte grrr

    wen ich die obere zeilen öffne und dann wieder ablege, löscht er diese und setzt sie aber nicht an die gleiche stelle.
    sondern die nicht geöffnete springt an die erste stelle und die gespeicherte zeile wird unten dran gehängt 😞

    mist immer diese neben effekte grrr
    würde ja schon gerne das er die zeile dort ablegt wo er sie aufgerufen hat und nicht drunter setzt 💡 😕

    hat den niemand ne idee wie man das beheben könnte?

    geduld zahlt sich doch immer wieder aus 🙄

    Form1->ListView2->Items->Item[StrToInt(Edititem->Text)]->Delete();
    
     Form1->ListView2->Items->Item[StrToInt(Edititem->Text)]->Caption;
    
    TListItem *ListItem = Form1->ListView2->Items->Insert(StrToInt(Edititem->Text));
    ListItem->Caption = Edit1->Text;
    ListItem->SubItems->Add(Edit35->Text);
    ListItem->SubItems->Add(Edit3->Text);
    ListItem->SubItems->Add(Edit2->Text);
    
    Close();
    

    special thx an Lucy und ihr richedit problem 👍 😃


Anmelden zum Antworten