AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein wie seletiere ich in einer ListView ein Item automatisch?
Thema durchsuchen
Ansicht
Themen-Optionen

wie seletiere ich in einer ListView ein Item automatisch?

Offene Frage von "Aviator"
Ein Thema von wschrabi · begonnen am 25. Nov 2016 · letzter Beitrag vom 26. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2      
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#1

wie seletiere ich in einer ListView ein Item automatisch?

  Alt 25. Nov 2016, 21:36
Hi
Ich habe eine lvFIles, wo die Filenames gezeigt werden. Wenn ich manuell in dieser Componente ein File markiere dann ist
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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

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

  Alt 25. Nov 2016, 22:33
Wie wäre es wenn du einfach die Property setzt?

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.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

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

  Alt 25. Nov 2016, 22:48
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.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#4

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

  Alt 26. Nov 2016, 01:35
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...



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;

Geändert von wschrabi (26. Nov 2016 um 01:52 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

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

  Alt 26. Nov 2016, 09:24
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;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

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

  Alt 26. Nov 2016, 11:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 26. Nov 2016, 12:04
Viel zu kompliziert ...
Wetten, dass if Assigned(ListView1.Items[i]) then immer True liefert
und Delphi-Referenz durchsuchenAnsiSameText.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#8

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

  Alt 26. Nov 2016, 12:44
Wetten, dass if Assigned(ListView1.Items[i]) then immer True liefert
Wette angenommen
Das steht da nur zur Vorsicht. Nicht, dass ich wieder Ärger von Luckie bekomme

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

Geändert von a.def (26. Nov 2016 um 13:00 Uhr)
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#9

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

  Alt 26. Nov 2016, 13:28
Schönen Dank für die Tips, wieder was gelernt!
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#10

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

  Alt 26. Nov 2016, 17:25
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 ShowMessage(ListView1.Items[2].Caption);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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