![]() |
VirtualDrawTree: Sinnvolles automatisches Scrollen
Hallo zusammen,
ich habe gerade echt ein recht lustiges Problem, bei welchem ich so direkt nicht weiter kommt. Ich habe schon über die DP-Suche erfahren, dass es eine Einstellung des VirtualDrawTree (TreeOptions -> AutoOptions -> toDisableAutoscrollOnFocus) gibt, die das Scrollen beim Fokusieren eines Einträgs ändert. Ich beschreibe euch erst mal was das diese Einstellung überhaupt macht: Deaktiviert (False, Standardeinstellung): Wenn diese Option deaktivert ist, so kann man mit der Tastatur in meiner Liste nach oben und unten blättern, so wie man es z.B. aus Outlook oder dem Windows Explorer kennt. Ist man am unterer Ende der sichtbaren List und es befinden sich darunter noch welche, so scrollt die List automatisch weiter nach unten, was ja auch wünschenswert ist. Nun ist es aber so, dass wenn ich weiter nach rechts scrolle und dann einen anderen Datensatz selektiere (Maus oder Tastatur), so scrollt er wieder komplett nach links und bleibt nicht weiter rechts stehen. Dieses Verhalten ist mir sehr suspekt. Aktiviert (True): Wenn diese Option aktiviert ist, so kann ich wie beim deaktivierten Zustand nach rechts scrollen, aber wenn ich dann einen anderen Datensatz selektiere, so bleibt der vertiakel Versatz, so wie es jeder User eigentlich erwarten würde. Nur scrollt der VDT nicht weiter nach unten, wenn ich mit der Tastatur den nächsten, nicht sichtbaren Eintrag selektiere. Kennt jemand eine Lösung, am besten über die Einstellungen des VDT, um diesen Umstand irgendwie zu umgehen? |
Re: VirtualDrawTree: Sinnvolles automatisches Scrollen
Hab mir gerade selbst die Lösung gegeben. Ich habe die besagte Option aktiviert, sodass nicht automatisch gescrollt wird. Das vertikale Scrollen habe ich dann über das Ereignis OnChange gelöst:
Delphi-Quellcode:
Die Methode ScrollBy() hatte auch nicht wirklich funktioniert.
procedure TframeMain.vdtDataChange(Sender: TBaseVirtualTree;
Node: PVirtualNode); begin if (not Assigned(node)) then exit; if (node = vdtData.GetFirstSelected) then vdtData.ScrollIntoView(Node, False, False); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 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 by Thomas Breitkreuz