Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   wie seletiere ich in einer ListView ein Item automatisch? (https://www.delphipraxis.net/190985-wie-seletiere-ich-einer-listview-ein-item-automatisch.html)

wschrabi 25. Nov 2016 21:36

wie seletiere ich in einer ListView ein Item automatisch?
 
Hi
Ich habe eine lvFIles, wo die Filenames gezeigt werden. Wenn ich manuell in dieser Componente ein File markiere dann ist
Delphi-Quellcode:
Assigned(lvFiles.Selected) and Assigned(lvFiles.Selected.Data)
beides wahr.

Doch jetzt habe ich einen Namen eines Files, das im Listview aufscheint und möchte diesen automatisch selectieren dass wieder diese beiden
ausdrucker wahr werden.

Wie geht das, wer weiß Rat?
DANKE

Aviator 25. Nov 2016 22:33

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Wie wäre es wenn du einfach die Property setzt? :stupid:

Delphi-Quellcode:
ListView.Selected := ListItem;
Das ganze wird dann ausgeführt wenn du z.B. dein ListView füllst und das entsprechende Item erstellt wird nach dem du suchst.

a.def 25. Nov 2016 22:48

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Oder so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 // Selektiere das DRITTE Item (0-basierte Zählung)
 ListView1.ItemIndex := 2;
end;
Oder so, dann könnten aber mehrere selektiert sein
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ListView1.Items[2].Selected := True;
end;
Natürlich sollte man hier auch prüfen, ob überhaupt entsprechend viele Items in der Liste enthalten sind, damit es nicht zu einem Fehler kommt.

wschrabi 26. Nov 2016 01:35

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Danke das leuchtet mir ein: Doch wie durchsuche ich den Listview nach den Filenamen den ich selectieren möchte:

Etwa so?
Delphi-Quellcode:
   for i := 0 to mainform.frmMain.lvFiles.Items.Count-1 do
      begin
      if mainform.frmMain.lvFiles.Items[i] = 'MeinFILENAME' then
         mainform.frmMain.lvFiles.Items[i].Selected:=True;
      end;
Da kommt der Compiler Err Type mismatch TListItem und TString.
Steh wohl auf der Leitung...

:oops:

Ich glaub ich habs:
Delphi-Quellcode:
   for i := 0 to mainform.frmMain.lvFiles.Items.Count-1 do
      begin
        lvItem := mainform.frmMain.lvFiles.Items.Item[i];
        s := lvItem.Caption +' ' +lvItem.SubItems[0] + ' ' + lvItem.SubItems[1];
        pendingfilename:=lvItem.Caption;
        //ShowMessage(s);
        if pendingfilename = stringreplace(stringreplace(defaultDATAFilename,'~','',[rfReplaceAll]),'/','',[rfReplaceAll]) then
         mainform.frmMain.lvFiles.Items[i].Selected:=True;
      end;

a.def 26. Nov 2016 09:24

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Zitat:

Zitat von wschrabi (Beitrag 1354725)
Ich glaub ich habs:
Delphi-Quellcode:
   for i := 0 to mainform.frmMain.lvFiles.Items.Count-1 do
      begin
        lvItem := mainform.frmMain.lvFiles.Items.Item[i];
        s := lvItem.Caption +' ' +lvItem.SubItems[0] + ' ' + lvItem.SubItems[1];
        pendingfilename:=lvItem.Caption;
        //ShowMessage(s);
        if pendingfilename = stringreplace(stringreplace(defaultDATAFilename,'~','',[rfReplaceAll]),'/','',[rfReplaceAll]) then
         mainform.frmMain.lvFiles.Items[i].Selected:=True;
      end;

Viel zu kompliziert ...

Delphi-Quellcode:
for i := 0 to ListView1.Items.Count - 1 do
  begin
   if Assigned(ListView1.Items[i]) then
    begin
     if AnsiLowerCase(ListView1.Items[i].Caption) = AnsiLowerCase('WasAuchImmer') then
      begin
       // Dein Code
      end;
    end;
  end;

Aviator 26. Nov 2016 11:52

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Und jetzt im optimalen Fall noch die Daten von der GUI trennen. Also nicht mehr die Caption prüfen, sondern ein im Item hinterlegtes/zugeordnetes Object.

himitsu 26. Nov 2016 12:04

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Zitat:

Zitat von a.def (Beitrag 1354732)
Viel zu kompliziert ...

Wetten, dass
Delphi-Quellcode:
if Assigned(ListView1.Items[i]) then
immer True liefert
und Delphi-Referenz durchsuchenAnsiSameText.

a.def 26. Nov 2016 12:44

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Zitat:

Zitat von himitsu (Beitrag 1354739)
Wetten, dass
Delphi-Quellcode:
if Assigned(ListView1.Items[i]) then
immer True liefert

Wette angenommen :thumb:
Das steht da nur zur Vorsicht. Nicht, dass ich wieder Ärger von Luckie bekomme :lol:

Zitat:

und AnsiSameText.
AnsiSameText ist zwar eindeutig besser, aber auch langsamer (bei 100000 Durchgängen :lol: )

wschrabi 26. Nov 2016 13:28

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Schönen Dank für die Tips, wieder was gelernt!:-D

a.def 26. Nov 2016 17:25

AW: wie seletiere ich in einer ListView ein Item automatisch?
 
Zitat:

Zitat von Aviator (Beitrag 1354738)
Und jetzt im optimalen Fall noch die Daten von der GUI trennen. Also nicht mehr die Caption prüfen, sondern ein im Item hinterlegtes/zugeordnetes Object.

Heißt das.... so?
Delphi-Quellcode:
var
 ListItem: TListItem;
begin
 ListItem := ListView1.Items[2];
 ShowMessage(ListItem.Caption);
end;
Statt
Delphi-Quellcode:
ShowMessage(ListView1.Items[2].Caption);
:idea:


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