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

Larsi 18. Nov 2007 12:12


ListView suchen
 
Wie kann ich in einer ListView suchen??? Vielleicht so, dass wenn man nach einen bestehenden eintrag sucht, dass dann die anderen ausgeblendet werden.

MFG Lars W.

DeddyH 18. Nov 2007 12:23

Re: ListView suchen
 
In einer Schleife durchlaufen und vergleichen, was anderes wüsste ich nicht.

Larsi 18. Nov 2007 12:36

Re: ListView suchen
 
kannste mir da n beispiel für geben ich kapier dat mit den schleifen nicht so richtig und wie kann ich denn ein listview item und ein edit überhaupt vergleichen???:(


MFG Lars W.
(das reimt sich^^)

Larsi 18. Nov 2007 13:02

Re: ListView suchen
 
oder geht das nur über umwege

DeddyH 18. Nov 2007 14:09

Re: ListView suchen
 
Ich verstehe nicht, was daran so schwierig sein soll.
Delphi-Quellcode:
gefunden := false;
for i := 0 to ListView.Items.Count - 1 do
  if ListView.Items[i] = Edit.Text then
    begin
      gefunden := true;
      break;
    end;
Oder ohne break mit einer while-Schleife:
Delphi-Quellcode:
gefunden := false;
i := 0;
while not gefunden and (i < ListView.Items.Count) do
  begin
    if ListView.Items[i] = Edit.Text then
      gefunden := true;
    inc(i);
  end;

Larsi 18. Nov 2007 15:20

Re: ListView suchen
 
und wie geht das, dass der dann nur das ergebnis in nem neuen listview anzeigt???

DeddyH 18. Nov 2007 15:24

Re: ListView suchen
 
Mit ListView.Items.Add auf dem anderen ListView. Evtl. vorher mit Clear alle Einträge löschen. F1 hilft ;)

Larsi 18. Nov 2007 15:46

Re: ListView suchen
 
thx

Larsi 18. Nov 2007 17:17

Re: ListView suchen
 
irgendwie kommen da ziemlcih viele fehler wenn ich das so ausführe zb das listitem und string nicht zusammen passt :(

DeddyH 18. Nov 2007 17:19

Re: ListView suchen
 
Sry, mein Fehler. Ersetz mal eine Zeile
Delphi-Quellcode:
if ListView.Items[i] = Edit.Text then
in
Delphi-Quellcode:
if ListView.Items[i].Caption = Edit.Text then

Larsi 18. Nov 2007 17:39

Re: ListView suchen
 
Delphi-Quellcode:
var gefunden: Boolean;
i: integer;
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
      gefunden := true;

    Form15.ShowModal;
Form15.ListView1.Items.AddItem(Form3.ListView1.Items[i]);
inc(i);
  end;
end;
wenn ich das so mache gehts net :( Der zeigt in dem anderen ListView nichts an was mache ich da denn falsch??????

MFG Lars W.

DeddyH 18. Nov 2007 17:49

Re: ListView suchen
 
Wie wäre es denn so?
Delphi-Quellcode:
var gefunden: Boolean;
    i: integer;
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;
          Form15.ListView1.AddItem(Form3.ListView1.Items[i].Caption,Form3.ListView1.Items[i]);
        end;
      inc(i);
    end;
  if gefunden then
    Form15.ShowModal;
end;
Überleg Dir mal, wo der Unterschied zwischen Show und ShowModal liegt.

Larsi 18. Nov 2007 17:59

Re: ListView suchen
 
und wie kann ich die subitems von form3 zu form15 kopieren von dem zu suchenden eintrag

DeddyH 18. Nov 2007 18:04

Re: ListView suchen
 
Ein bisschen Denkleistung kann man aber schon erwarten. Letzte Hilfe in dieser Sache:
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;
Immer noch ungetestet meinerseits.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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