Scrollen Sie mit der 3D-Ansicht, während Sie über / nahe den Kanten ziehen

8

Ich habe eine TTreeView, die viele Knoten haben kann, wenn viele Knoten erweitert werden, benötigt die Baumstruktur viel Platz auf dem Bildschirm.

Nehmen wir nun an, ich möchte einen Knoten, der sich am unteren Ende der TreeView befindet, nach oben ziehen. Ich kann den oberen Teil der TreeView nicht sehen, weil der Knoten, den ich auswähle, unten liegt. Wenn ich den Knoten an den Anfang der TreeView ziehe, möchte ich, dass die TreeView beim Ziehen automatisch mit mir scrollt. Das scheint standardmäßig nicht zu passieren.

Ein perfektes Beispiel für dieses Verhalten ist im Windows Explorer zu sehen. Wenn Sie versuchen, eine Datei oder einen Ordner zu ziehen, wird beim Bewegen des Objekts (Knoten) automatisch nach oben oder unten geblättert, abhängig von der Cursorposition.

Hoffe, dass das Sinn macht.

PS, ich weiß bereits, wie man Knoten zieht, ich möchte, dass die TreeView mit mir scrollt, wenn ich drehe, wenn ich in der Nähe der Ober- oder Unterseite der TreeView schwebe.

Danke.

    
Lars Truijens 05.06.2011, 13:24
quelle

2 Antworten

11

Dies ist der Code, den ich verwende. Es funktioniert für jede TWinControl absteigend: Listenfeld, Baumansicht, Listenansicht etc.

%Vor%

Um es zu verwenden, fügen Sie einen OnStartDrag -Ereignishandler für das Steuerelement hinzu und implementieren es wie folgt:

%Vor%     
David Heffernan 05.06.2011, 13:32
quelle
1

Hier ist eine Alternative basierend auf der Tatsache, dass der ausgewählte Knoten immer automatisch in der Ansicht scrollt.

%Vor%

Sie können den OnDragOver-Ereignishandler auch mit dem übergeordneten Element der TreeView verknüpfen, was dazu führt, dass Sie scrollen und löschen können, wenn sich die Maus außerhalb der TreeView befindet. Wenn Sie das Scrollen möchten, aber nicht das Ablegen, wenn sich die Maus außerhalb der TreeView befindet, dann überprüfen Sie if Target = Sender im Eventhandler OnEndDrag.

    
NGLN 05.06.2011 16:40
quelle

Tags und Links