ListBox Eigenschaft? welches ItemIndex makiert ist?
-
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 ...
-
-
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ürdeich 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ücksetzenich 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.