AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu TListView...

Ein Thema von DymonD · begonnen am 22. Mai 2005 · letzter Beitrag vom 24. Mai 2005
Antwort Antwort
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#1

Frage zu TListView...

  Alt 22. Mai 2005, 20:33
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 ).

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:
Edit1.Text := ListView1.Items[i].SubItems[0]; Nun ist aber i die Zeilennummer, und genau die brauche ich

Triftige Lösungsvorschläge? Her damit

THX im Voraus
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:37
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
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:39
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 )
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:45
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('...')...
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:47
Doch, IndexOf gibt es natürlich auch.

Aber du solltest das in tern alles verwalten, das ist um einiges rasanter.
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Frage zu TListView...

  Alt 22. Mai 2005, 20:54
Okay, wenn es IndexOf auch noch gibt dann bin ich erfreut (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"

// NACHTRAG

Bei IndexOf will er ein TListItem, deshalb peile ich das nicht, weil ich das immer nur mit einem TString gehabt habe...
Miniaturansicht angehängter Grafiken
image4_124.gif  
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Frage zu TListView...

  Alt 24. Mai 2005, 14:51
Habe mir jetzt mal was zusammengebastelt...
Delphi-Quellcode:
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;
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.
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Frage zu TListView...

  Alt 24. Mai 2005, 14:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Frage zu TListView...

  Alt 24. Mai 2005, 15:04
Nachdenken lohnt sich
Delphi-Quellcode:
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;
Somit bedanke ich mich auch bei allen für die indirekte Hilfe
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz