![]() |
Frage zu TListView...
Ich weiß echt nicht, wie ich den Titel gestalten soll...
Aber erstmal Hallo. Jetzt experimentiere ich mit dem TListView. Ich kann da schon immerhin was auslesen und was reinschreiben (nach ca. 2 Stunden Arbeit :lol:). Und hier auch gleich meine Frage: Ich habe die Spalten: Nr., IP-Adresse, Nickname, Status. Nun wenn ich einen String übergeben bekomme (Nickname), möchte ich herausfinden, in welcher Zeile er steckt, damit ich dann die IP-Adresse in der benachbarten Zeile herauslesen kann. Lesen geht ja so:
Delphi-Quellcode:
Nun ist aber i die Zeilennummer, und genau die brauche ich :-D
Edit1.Text := ListView1.Items[i].SubItems[0];
Triftige Lösungsvorschläge? Her damit ;-) THX im Voraus |
Re: Frage zu TListView...
DIe ListView ist eine Komponente zur Gestaltung deiner Programmoberfläche und kein Daten-Container. Für die Zuordnung von Nickname zu IP-Nummer solltest du besser deine interne Speicherstruktur verwenden.
Grüße vom marabu |
Re: Frage zu TListView...
Ich habe DBGrid versucht, aber damit komme ich nicht so ganz klar. Und das soll ja auch nciht nur zwischenspeichern, sondern auch anzeigen, wer wo ist ;-) (ist für einen Chatserver gedacht, vorher hatte ich 3 TListBoxes :lol:)
|
Re: Frage zu TListView...
In einer for-Schleife die Einträge durchgehen und stoppen, wo der Name auftritt (break) und die Zählvariable i hast du dann ja.
Aber das geht auch nur, wenn du nicht zu viele Einträge hast, ansonsten kann das recht langsam werden. |
Re: Frage zu TListView...
Schonmal danke.
Wäre natürlich eine Idee, aber wenn das ein Chatserver sein soll, dann kann es schon passieren, dass sich da mehrere Leute aufhalten. Das ist allerdings auch nicht die beste Methode, gibt es da keine einfache?? So wie bei der guten alten ListBox: IndexOf('...')... |
Re: Frage zu TListView...
Doch, IndexOf gibt es natürlich auch.
Aber du solltest das in tern alles verwalten, das ist um einiges rasanter. |
Re: Frage zu TListView...
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, wenn es IndexOf auch noch gibt dann bin ich erfreut :lol: (hab das sogar gesehen, bin aber irgendwie nicht so sehr mit klar gekommen). Und außerdem dient das nicht nur der Speicherverwaltung sondern auch der Übersicht. Früher habe ich das mit einer TListBox gemacht und wollte das jetzt "etwas schöner" und "ordentlicher machen"... Als Anhang noch mal mein "Problem" :-D
// NACHTRAG Bei IndexOf will er ein TListItem, deshalb peile ich das nicht, weil ich das immer nur mit einem TString gehabt habe... |
Re: Frage zu TListView...
Habe mir jetzt mal was zusammengebastelt...
Delphi-Quellcode:
funkt auch, ich kann alles auslesen, was ich will. Nur: wenn er einen Eintrag nicht findet, gibt es eine Zugriffsverletzung. Ich nehme an, dass das daher kommt, dass er dann die Lesevariable nicht hat. Aber sicher bin ich mir nicht. Kann mir da jemand PLZ einen Tip geben? THX schonmal.
procedure TForm1.Button3Click(Sender: TObject);
var i : integer; begin for i := 0 to ListView1.Items.Count - 1 do begin if ListView1.Items[i].SubItems[1] = Edit8.Text then break; // Springe aus der Schleife raus end; Edit7.Text := ListView1.Items[i].SubItems[0]; Edit9.Text := ListView1.Items[i].SubItems[2]; end; |
Re: Frage zu TListView...
Na ja, ist ja auch klar: Ob er den Eintrag findet oder nicht spielt bei der Bearbeitung der beiden Anweisungen nach der Schleife keine Rolle. Wenn du das änderst, tritt das Problem nicht auf. Entweder springst du aus der Prozedur/Funktion raus, oder du benutzt eine bool-Variable als Kontrolle.
|
Re: Frage zu TListView...
Nachdenken lohnt sich :-D
Delphi-Quellcode:
Somit bedanke ich mich auch bei allen für die indirekte Hilfe ;-)
procedure TForm1.Button3Click(Sender: TObject);
var i : integer; vorhanden : boolean; begin vorhanden := false; for i := 0 to ListView1.Items.Count - 1 do begin if ListView1.Items[i].SubItems[1] = Edit8.Text then begin vorhanden := true; break; end; end; if vorhanden = true then begin Edit7.Text := ListView1.Items[i].SubItems[0]; Edit9.Text := ListView1.Items[i].SubItems[2]; end else ShowMessage('Eintrag existiert nicht!'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz