![]() |
Listview (gleiche Zeile- unterschiedliche Spalte)
Hallo!
Ich habe eine Listview mit zwei Columns! In die 1. Spalte lasse ich zahlen mir RegExpr einlesen. Im nächsten Schritt möchte ich etwas in der zweiten Spalte einlesen lassen. Nun habe ich aber das Problem, dass er nicht in der ersten Zeile (in der zweiten Spalte) anfängt, sondern unter der letzten Zeile! Die erste Spalte lese ich so ein:
Delphi-Quellcode:
Und die zweite dann so:
ListItem := listview1.Items.Add;
listitem.Caption := (r.Match[0]);
Delphi-Quellcode:
Wie bekomme ich es hin, das die eingelesenen Zahlen in Spalte 2 von der ersten Zeile an drin stehen???
ListItem := listview1.Items.Add;
listitem.SubItems.Add('Eintrag zweite Spalte'); Vielen Dank im voraus! |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Hallo,
du erzeugst per ListView.Items.Add immer neue Zeilen. Um was in die 1. Zeile / 2. Spalte zu schreiben
Delphi-Quellcode:
Um was in die 2. Zeile / 2. Spalte zu schreiben
ListItem:= ListView.Items[0];
ListItem.SubItems.Add('hoika is gut');
Delphi-Quellcode:
Heiko
ListItem:= ListView.Items[1];
ListItem.SubItems.Add('hoika is gut'); |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Hi,
oder so:
Delphi-Quellcode:
var
ListItem: TListItem; begin ListItem := listview1.Items.Add; Listitem.Caption := 'Eintrag erste Spalte'; Listitem.SubItems.Add('Eintrag zweite Spalte'); |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Zitat:
Delphi-Quellcode:
Mein Problem ist jetzt: Nun soll er etwas aus einer Listbox in die zweite Spalte komplett füllen!
try
r.Expression := '[0-9]{2}:[0-9]{2}:[0-9]{2}'; if r.Exec(Memo1.Lines.Text) then repeat listbox1.items.Add(r.Match[0]); //hier soll er es in Zukunft in eine Spalte der Listview eintragen until not r.ExecNext; finally r.Free; l.Free; end; Gruß! |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Hallo,
was hast du an meinem Code nicht verstanden ??? Mensch !!! ;) Du darfst kein ListView.Items.Add machen, sondern musst dir das entsprechende ListItem raussuchen, das steht ja schon drin. Jeder Aufruf von ListView.Items.Add erzeugt ne neue Zeile, und das soll es ja nicht. Da dein Code nicht sher aussagekräftig ist, mal nen Schuss ins Blöaue
Delphi-Quellcode:
var
iRow : Integer; ListItem : TListItem; begin if r.Exec(Memo1.Lines.Text) then begin iRow:= 0; repeat ListItem:= ListView.Items[iRow]; ListItem.SubItems.Add(r.Match[0]); Inc(iRow); until not r.ExecNext; end; end; Heiko |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Bekomme aber mit diesem Code an der Stelle
Delphi-Quellcode:
eine AV!
ListItem.SubItems.Add(r.Match[0]);
Habe ich etwas vergessen? Zwei Columns habe ich auch erstellt! ViewStyle der Listview ist auf vsReport! Hier nochmal ein längerer Auszug aus meinem Code:
Delphi-Quellcode:
WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
l := TStringList.Create; r := TRegExpr.Create; try r.Expression := '[0-9]{2}:[0-9]{2}:[0-9]{2}'; if r.Exec(Memo1.Lines.Text) then begin iRow:= 0; repeat ListItem:= ListView1.Items[iRow]; ListItem.SubItems.Add(r.Match[0]); //hier kommt die AV Inc(iRow); until not r.ExecNext; end; finally r.Free; l.Free; end; |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Hallo
und wo kommt mit folgendem geändertem Code ? die Frage ist auch, ob es mehr matches als items (Zeilen) gibt.
Delphi-Quellcode:
var
sMatch: String; ListItem:= ListView1.Items[iRow]; Assert(ListItem<>NIL); sMatch:= r.Match[0]; ListItem.SubItems.Add(sMatch); Heiko |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Dann meldet er mir für diese Zeile
Delphi-Quellcode:
Im Project ist eine Exception der Klasse EAssertionFailed aufgetreten!
Assert(ListItem<>NIL);
Delphi-Quellcode:
Es müssten im Moment 19 Zeilen in die Listview eingetragen werden!
WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
l := TStringList.Create; r := TRegExpr.Create; try r.Expression := '[0-9]{2}:[0-9]{2}:[0-9]{2}'; if r.Exec(Memo1.Lines.Text) then repeat ListItem:= ListView1.Items[iRow]; Assert(ListItem<>NIL); sMatch:= r.Match[0]; ListItem.SubItems.Add(sMatch); until not r.ExecNext; finally r.Free; l.Free; end; |
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
du hast dir selbst die Antwort gegeben. Wenn Assert eine Exception wirft bei der Prüfung ist dein ListItem nil und somit kracht es wenn du damit rumhantieren willst. Ich glaub deine Programmlogic hakt irgendwo.
|
Re: Listview (gleiche Zeile- unterschiedliche Spalte)
Hier nochmal meine Vorstellung von dem Programm:
- ich habe ein Memo welches mit RegExpr nach bestimmten Zeichen durchsucht wird - die Ergebnisse sollen in eine Spalte einer Listview - danach soll eine zweite Spalte (von der ersten Zeile angefangen)der Listview einträge aus einer vorhandenen Listbox übernehmen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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