![]() |
[TTreeView] Während Drag&Drop auf Select reagieren
Hallo zusammen,
ich möchte gerne in meinem TreeView per Drag & Drop Einträge verschieben können. Das funktioniert auch schon soweit. Nur habe ich das Problem, wenn ich eine Node selektiere während des Drag, dann wird diese Node nicht erweitert. Wie kann ich das realisieren ? |
Re: [TTreeView] Während Drag&Drop auf Select reagieren
Meinst du so?
Delphi-Quellcode:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); var Node: TTreeNode; begin Node := TreeView1.GetNodeAt(X, Y); if Assigned(Node) then Node.Expand(False); end; |
Re: [TTreeView] Während Drag&Drop auf Select reagieren
|
Re: [TTreeView] Während Drag&Drop auf Select reagieren
Ich habe das Beispiel in einer etwas anderen Form verwendet. Ich habe das Verschieben in eine eigene Procedure gesteckt. Nun habe ich das Problem dabei, dass sich mein Programm fast regelmäßig aufhängt, wenn ich zu schnell die Kategorien wechsel mit der Maus. Mit dem Debugger habe ich herrausgefunden, dass ich immer in der Procedure für das Verschieben hängen bleibe. Nur weiß ich nicht warum. Hier die Procedure zum Verschieben :
Delphi-Quellcode:
Das funktioniert auch alles wunderbar, wenn ich langsam damit arbeite. Das Programm bleibt in der For-Schleife hängen und wiederholt immer die Kategorie, die als letztes vor dem Aufhängen angeklickt wurde. Ich wollte damit erreichen, dass ich auch Nodes verschieben kann, die noch mehrere Childs haben.
procedure TMainForm.MoveNode(TargetNode, SourceNode : TTreeNode);
var nodeTmp : TTreeNode; i : Integer; begin with TV_Category do begin nodeTmp := Items.AddChild(TargetNode,SourceNode.Text); nodeTmp.ImageIndex := SourceNode.ImageIndex; nodeTmp.SelectedIndex := SourceNode.SelectedIndex; for i := 0 to SourceNode.Count -1 do begin MoveNode(nodeTmp,SourceNode.Item[i]); end; end; end; Jetzt meine Frage, wird das OnDragOver-Ereignis auch dann aufgerufen, wenn ich nur eine Node anklicke ? Kann ich das irgendwie verhindern, dass sich diese Procedure aufhängt und wenn ja wie ? |
Re: [TTreeView] Während Drag&Drop auf Select reagieren
Zitat:
|
Re: [TTreeView] Während Drag&Drop auf Select reagieren
Danke Tom, ich habe das Drag & Drop jetzt mit MoveTo gemacht. Es scheint besser zu sein. Ich werde es mal beobachten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 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-2025 by Thomas Breitkreuz