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

n/a Beiträge
 
#1

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
456 Beiträge
 
#2

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
 
#3

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.611 Beiträge
 
Delphi 10.3 Rio
 
#4

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

n/a Beiträge
 
#5

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
Aviator

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

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

  Alt 26. Nov 2016, 17:37
Nein. Ich meine mit Trennung der Daten, dass du dir den FileName nicht aus der Caption des ListViewItems ziehst, sondern von einem Object das dem ListViewItem hinterlegt ist. Kann dir jetzt aktuell kein Beispiel machen, aber du kannst ja dir ja mal TListItem.Data anschauen. Dort kannst du einen Pointer auf das Object hinterlegen von dem du die Daten ziehen willst.

Weil die GUI kann sich irgendwann mal ändern. Die Daten und die Logik im Programm bleiben i.d.R. gleich. Deshalb sollte man niemals Daten und GUI mischen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.388 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.
Ein Therapeut entspricht 1024 Gigapeut.
  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
456 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
Antwort Antwort


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 01:13 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