Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   ListView suchen (https://www.delphipraxis.net/104166-listview-suchen.html)

Larsi 28. Nov 2007 14:14


ListView suchen
 
hi,
wie kann ich in ner listview suchen(auch nach subitems-eiträgen) ich möchte dass das dann in ner anderen listview steht das suchergebnis!

hab das mit dem suchen schon so hinbekommen:
Delphi-Quellcode:
var gefunden: Boolean;
    i, iCnt: integer;
    l: TListItem;
begin
  gefunden := false;
  i := 0;
  while not gefunden and (i < Form3.ListView1.Items.Count) do
    begin
      if Form3.ListView1.Items[i].Caption = Edit1.Text then
        begin
          gefunden := true;
          //Erstellen eines neuen ListItems
          l := Form15.ListView1.Items.Add;
          //Zuweisung der Beschriftung
          l.Caption := Form3.ListView1.Items[i].Caption;
          //Kopieren aller SubItems
          for iCnt := 0 to Form3.ListView1.Items[i].SubItems.Count - 1 do
            l.SubItems.Add(Form3.ListView1.Items[i].SubItems[iCnt]);
        end;
      inc(i);
    end;
  if gefunden then
    Form15.ShowModal;
end;
aber wenn ich nach nem subitem suche findet der gar nichts!

MFG Lars W.

Deep-Sea 28. Nov 2007 14:20

Re: ListView suchen
 
Zitat:

Zitat von Larsi
aber wenn ich nach nem subitem suche findet der gar nichts!

Wie auch, wenn du nur auf die Caption prüfst.
Genau wie du die SubItems kopierst, musst du sie auch durchsuchen, mit einer Schleife.

Larsi 28. Nov 2007 14:26

Re: ListView suchen
 
kann ich das in die schleife mit reintun oder muss ich da ne neue nehmen???

Deep-Sea 28. Nov 2007 14:27

Re: ListView suchen
 
Zitat:

Zitat von Larsi
kann ich das in die schleife mit reintun oder muss ich da ne neue nehmen???

Eine neue :P sonst wird das nichts ...

DeddyH 28. Nov 2007 14:31

Re: ListView suchen
 
Und das im else-Zweig ;)

Deep-Sea 28. Nov 2007 14:31

Re: ListView suchen
 
Ach übrigens: Wenn du deinen gewünschten Eintrag gefunden hat, dann kannst du die Schleife mit Break verlassen und musst nicht auf eine Variable wie "gefunden" prüfen.

Larsi 28. Nov 2007 14:35

Re: ListView suchen
 
hab das grad versucht aba dann is alles irgendwie(:)) abgestürzt!
kannste mir da bidde viellecht n beipsiel für geben

DeddyH 28. Nov 2007 14:36

Re: ListView suchen
 
Bei break und exit reagieren einige allergisch ("schlechter Stil").

Larsi 28. Nov 2007 14:38

Re: ListView suchen
 
kapier ich jez net so ganz hat denn keiner n bisschen zeit um mir da nbeipsiel für zu machen???

DeddyH 28. Nov 2007 14:41

Re: ListView suchen
 
Ungetestet:
Delphi-Quellcode:
var gefunden: Boolean;
    i, j, iCnt: integer;
    l: TListItem;
begin
  gefunden := false;
  i := 0;
  while not gefunden and (i < Form3.ListView1.Items.Count) do
    begin
      if Form3.ListView1.Items[i].Caption = Edit1.Text then
        begin
          gefunden := true;
          //Erstellen eines neuen ListItems
          l := Form15.ListView1.Items.Add;
          //Zuweisung der Beschriftung
          l.Caption := Form3.ListView1.Items[i].Caption;
          //Kopieren aller SubItems
          for iCnt := 0 to Form3.ListView1.Items[i].SubItems.Count - 1 do
            l.SubItems.Add(Form3.ListView1.Items[i].SubItems[iCnt]);
        end
      else
        begin
          for j := 0 to Form3.ListView1.Items[i].SubItems.Count - 1 do
            if Form3.ListView1.Items[i].SubItems[j] = Edit1.Text then
              begin
                gefunden := true;
                //Erstellen eines neuen ListItems
                l := Form15.ListView1.Items.Add;
                //Zuweisung der Beschriftung
                l.Caption := Form3.ListView1.Items[i].Caption;
                //Kopieren aller SubItems
                for iCnt := 0 to Form3.ListView1.Items[i].SubItems.Count - 1 do
                  l.SubItems.Add(Form3.ListView1.Items[i].SubItems[iCnt]);
                break; //einmal reicht wohl
              end;
        end;
      inc(i);
    end;
  if gefunden then
    Form15.ShowModal;
end;
Da wir nun aber 2 mal dasselbe tun, kann man über eine Unterprozedur nachdenken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Seite 1 von 2  1 2      

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