Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi listview Vergleichen??? (https://www.delphipraxis.net/10855-listview-vergleichen.html)

schniede 26. Okt 2003 19:50


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:
var
itm: TListItem;

begin
 itm := ListView1.Items.Add;
           itm.Caption := table5.fieldbyname('Käufer').Asstring ;
           itm.SubItems.Add(table5.fieldbyname('Kdnr.').Asstring);
end;
mfg schniede

[edit=r_kerber]Doppeltes Posting gelöscht. Mfg, r_kerber[/edit]
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

MathiasSimmack 26. Okt 2003 19:54

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.

Alexander 26. Okt 2003 19:59

Re: listview Vergleichen???
 
Es gibt IndexOf. kleines Beispiel:
Delphi-Quellcode:
if Listview1.Items.IndexOf('test') = -1 then
 ShowMEssage('Item nicht vorhanden..')

schniede 26. Okt 2003 20:17

Re: listview Vergleichen???
 
Danke, aber damit bekomme ich ne Fehlermeldung (inkompatible typen)
Delphi-Quellcode:
if Listview1.Items.IndexOf(table5.fieldbyname('Kdnr.').Asstring) = -1 then
ShowMEssage('Item nicht vorhanden..')
hab noch finddatafinddata gefunden nur leider kein beispiel dazu :roll:

mfg schniede

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

sharkx 26. Okt 2003 20:49

Re: listview Vergleichen???
 
Du kannst die ListView aber auch als StringList handeln...


Delphi-Quellcode:
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;
Aufrufen tust es dann mit ...

Delphi-Quellcode:
    if not DupeInListView(meinString,Form1.ListView1) then
      newlist.Add(meinString)
Mag zwar net die saubere lösung sein, aber besser hatte ich es auch nicht geschafft.

schniede 27. Okt 2003 08:05

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 07:10 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