Einzelnen Beitrag anzeigen

Fukiszo
(Gast)

n/a Beiträge
 
#1

ListView Scrollen per Code

  Alt 21. Jan 2018, 19:54
Hallo,
in eine ListView per Code scrollen, da frage mich,
ob meine methode die richtige ist
bzw ob ihr andere möglichkeiten habt soetwas zu bewerkstelligen?

Code:
var x: Extended;
begin
 x := -ListView1.Font.Size * ListView1.Font.PixelsPerInch / 72; // höhe pro item berechnen
 if x < 0 then x := -ListView1.Font.Height * 72 / ListView1.Font.PixelsPerInch; // nochmal falls erste variante fehlschlägt
 x := x * (ListView1.ItemIndex+3); // hier die +3 damit die sichtbare auswahl mehr in richtung mitte der LV wandert
 ListView1.Scroll(0,Round(x)); // hier wird gescrollt
end;
So funktioniert es meist relativ gut aber manchmal nicht präzise genug.
(ich vermute das liegt an meiner berechnung der höhe pro item)


Sinn und zweck soll sein:
ich start das Programm, ein verzeichniss wird in die LV ausgegeben,
eine datei wird ausgewählt (per .exe start parameter)
nun soll die datei nicht nur ausgewählt sein sondern auch im sichtbaren bereich liegen.
(nach möglichkeit ein wenig zentriert in der LV)

Programmiert per WinAPI aber VCL/TWinControl befehle könnt ich bestimmt umschreiben/einbinden.

Für vorschläge oder Code verbesserungen im allgemeinen wäre ich dankbar!

Grüße
  Mit Zitat antworten Zitat