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