Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi VirtualDrawTree: Sinnvolles automatisches Scrollen (https://www.delphipraxis.net/145776-virtualdrawtree-sinnvolles-automatisches-scrollen.html)

s.h.a.r.k 8. Jan 2010 01:38


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?

s.h.a.r.k 8. Jan 2010 01:55

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:
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;
Die Methode ScrollBy() hatte auch nicht wirklich funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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