Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listview sortieren: Makevisible(False) (https://www.delphipraxis.net/57237-listview-sortieren-makevisible-false.html)

lucius 17. Nov 2005 15:53


Listview sortieren: Makevisible(False)
 
Hallo Leute,
Ich probiere eine Art Sortierung fuer meine Listview zu bauen.
In der 3ten Spalte stehen die Werte wonach geguckt werden soll.
Die Werten koennen sein:
Zitat:

Film - DVD Film - SVCD Games - Console unsw
Jetzt moechte ich es hinkriegen das wenn ich zb ne Checkbox anklicke das nur die Film - DVD Werte in der Listview zu sehen sind.
Jetzt wollte ich das mit MakeVisible() hinkriegen aber es klappt nicht ganz.
MakeVisible und nicht Delete denn die andere Werte sollen in der LV drin bleiben aber nicht zu sehen sein.
Delphi-Quellcode:
procedure Form.SortierClick(Sender: TObject);
var
listitem : TListItem;
i: integer;
begin
   for i := 0 to listview.Items.Count -1 do
     begin
       if listitem.SubItems[1] = 'Films - DVDr' then
       begin
       Listview.Items.Item[i].MakeVisible(False);
       end;
     end;
end;
PS: Es handelt sich hier um keine Virtuellen Listview.
Recht herzlichen Dank.

Luckie 17. Nov 2005 16:19

Re: Listview sortieren: Makevisible(False)
 
Lösche die Einträge. Der Listview sollte nicht zur Datenhaltung, sondern nur zur Visualisierung verwendet werden. Damit trennst du dann auch OOP konform doe Daten von der Oberfläche.

lucius 17. Nov 2005 16:56

Re: Listview sortieren: Makevisible(False)
 
Hi Lucki,
Delphi-Quellcode:
procedure TDemoForm.Button6Click(Sender: TObject);
var
listitem : TListItem;
i: integer;
begin
for i := 0 to listview.Items.Count -1 do
begin
if listitem.SubItems[1] = 'Films - DVDr' then <----- AccesViolation
     begin
     Listview.Items.Item[i].Delete;
     end;
end;
end;
Hat jemand nen Vorschlag?

Luckie 17. Nov 2005 17:11

Re: Listview sortieren: Makevisible(False)
 
Bei einer for-Schleife wird die Bedingung im Schleifenkopf nur einmal überprüft. Wenn du jetzt einen Eintrag löscht, läuft die Schleife zu weit und es kracht. Lösung: Lass die Schleife rückwärte mit Delphi-Referenz durchsuchendownto laufen.

lucius 17. Nov 2005 17:23

Re: Listview sortieren: Makevisible(False)
 
Hmmm Lucki,
Delphi-Quellcode:
procedure TDemoForm.Button6Click(Sender: TObject);
var
listitem : TListItem;
i: integer;
begin
for i := pred(listview.Items.Count) downto 0 do
begin
if listitem.SubItems[1] = 'Films - DVDr' then <------------- hier stimmt was nicht.
     begin
     Listview.Items.Item[i].Delete;
     end;
end;
end;

Luckie 17. Nov 2005 17:26

Re: Listview sortieren: Makevisible(False)
 
Zitat:

Zitat von lucius
Hmmm Lucki,
Delphi-Quellcode:
if listitem.SubItems[1] = 'Films - DVDr' then <------------- hier stimmt was nicht.

Und woher soll ich jetzt, ohne Glaskugel, wissen, was das nicht stimmt. :evil:

lucius 17. Nov 2005 17:35

Re: Listview sortieren: Makevisible(False)
 
Ja sry Lucki,
Zitat:

if listitem.SubItems[1] = 'Films - DVDr' then <------------- hier stimmt was nicht.
Die Subitems Films - DVDr stehen in der 3e Spalte von der Listview.
Wie greife ich in den Loop darauf zu?
Er gibt den Fehler in listitem.SubItems[1].

Gruss Lucius.

Luckie 17. Nov 2005 17:36

Re: Listview sortieren: Makevisible(False)
 
Wenn es die dritte Spalte ist, warum gibst du denn dann als Index 1 ein? Etwas mehr nachdenken beim Programmieren bitte.

lucius 17. Nov 2005 17:42

Re: Listview sortieren: Makevisible(False)
 
Sorry Lucki das ich deine Zeit verplempere.
Zitat:

listitem.SubItems[1] = 'Films - DVDr'
Ist schon gut so, bei CustomDrawItem gehts, aber die ganze loop stimmt nicht.
Ich gebe es auf.

idontwantaname 17. Nov 2005 19:38

Re: Listview sortieren: Makevisible(False)
 
nur so ne frage, wo weißt du listitem zu ?
ich quellcode find ich nirgends ein "listitem := listview.items[i];" oder ähnliches


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