![]() |
listview Vergleichen???
Hallo!
Ich möchte ein listview mit daten aus einer tabelle füllen ,aber erst überprüfen ob die zeile schon vorhanden ist wenn ja dann ignorieren , nein - Eintragen? wie stell ich das am besten an?
Delphi-Quellcode:
mfg schniede
var
itm: TListItem; begin itm := ListView1.Items.Add; itm.Caption := table5.fieldbyname('Käufer').Asstring ; itm.SubItems.Add(table5.fieldbyname('Kdnr.').Asstring); end; [edit=r_kerber]Doppeltes Posting gelöscht. Mfg, r_kerber[/edit] [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: listview Vergleichen???
Es müsste eine Art "IndexOf"-Funktion geben.
Das API stellt darüber auch noch "ListView_FindItem" zur Verfügung. Ich bin sicher, Borland hat für die VCL eine Implementierung dieser Funktion drin. |
Re: listview Vergleichen???
Es gibt IndexOf. kleines Beispiel:
Delphi-Quellcode:
if Listview1.Items.IndexOf('test') = -1 then
ShowMEssage('Item nicht vorhanden..') |
Re: listview Vergleichen???
Danke, aber damit bekomme ich ne Fehlermeldung (inkompatible typen)
Delphi-Quellcode:
hab noch
if Listview1.Items.IndexOf(table5.fieldbyname('Kdnr.').Asstring) = -1 then
ShowMEssage('Item nicht vorhanden..') ![]() mfg schniede [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: listview Vergleichen???
Du kannst die ListView aber auch als StringList handeln...
Delphi-Quellcode:
Aufrufen tust es dann mit ...
var
list, newlist: TStringList; meinString: String; .............. function DupeInList(dupestring : string; list : TStrings; ignoreCase : boolean) : boolean; var i : integer; dump : string; l1, l2 : integer; begin result := true; for i := 0 to list.count-1 do begin dump := list.Strings[i]; if ignoreCase then begin dump := UpperCase(dump); dupestring := UpperCase(dupestring); end; l1 := length(dump); l2 := length(dupestring); if l1 = l2 then if dump = dupestring then exit; end; result := false; end; function GiveListviewAsString(listView : TListView) : string; var i : integer; l : TStrings; dump : string; begin l := TStringList.Create; for i := 0 to Listview.Items.Count-1 do begin dump := ListVIew.Items[i].Caption+ListVIew.Items[i].SubItems[0]; l.Add(dump); end; result := l.CommaText; l.Free; end; function DupeInListView(dupeString : string; Listview : TListView): boolean; var list : TStrings; begin list := TStringLIst.Create; list.CommaText := GiveListviewAsString(listview); result := DupeInList(dupeString,list,true); end;
Delphi-Quellcode:
Mag zwar net die saubere lösung sein, aber besser hatte ich es auch nicht geschafft.
if not DupeInListView(meinString,Form1.ListView1) then
newlist.Add(meinString) |
Re: listview Vergleichen???
Danke Für Eure Hilfe ,hab es aber mit ner Tabelle gemacht da seh ich wenigstens durch.
Bin auch ein bissel im Zeitdruck deshalb hab ich mich für ein bequemeren Weg entschieden. mfg schniede |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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