Announcement

Collapse
No announcement yet.

automatisches scrollen im TreeView bei Drag&Drop innerhalb des TreeViews

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • automatisches scrollen im TreeView bei Drag&Drop innerhalb des TreeViews

    Hallo,<br>
    Ich möchte innerhalb eines TreeViews eine Drag and Drop Aktion durchführen. Dabei soll der TreeView automatisch zu scrollen beginnen, wenn ich an die Ränder des TreeViews mit dem Mauszeiger bei der Drag Aktion komme.<br>
    Wie kann ich das implementieren?

  • #2
    Hallo<br>
    ich hatte dieses Problem einmal so gelöst<br>
    procedure TAnforderungsDBForm.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
    State: TDragState; var Accept: Boolean);
    var Msg: TMsg;
    HTest: THitTests;
    begin
    Accept := ((TreeView1.Selected <> NIL) and (TreeView1.Selected.Data <> NIL) and (TreeView1.GetNodeAt(x,y) = NIL)) or ((TreeView1.Selected <> NIL) and (TreeView1.Selected.Data <> NIL) and (TreeView1.GetNodeAt(x,y) <> NIL) and (TreeView1.getNodeAT(x,y).Data = NIL));
    if (TreeView1.GetNodeAt(x,y) = NIL) and (TreeView1.Selected.Data <> NIL) then<br>
    begin<br>
    TreeView1.DragCursor := crHandPoint;<br>
    TreeView1.OnMouseUp := TreeView1MouseUp;<br>
    TreeView1.Tag := 1;<br>
    repeat<br>
    begin<br>
    HTest := TreeView1.GetHitTestInfoAt(X, Y);<br>
    if htBelow in HTest then<br>
    SendMessage(TreeView1.Handle,WM_VSCROLL,SB_LineDOW N,0);<br>
    if htAbove in HTest then<br>
    SendMessage(TreeView1.Handle,WM_VSCROLL,SB_LineUP, 0);<br>
    if htToRight in HTest then<br>
    SendMessage(TreeView1.Handle,WM_HSCROLL,SB_LineRIG HT,0);<br>
    if htToLeft in HTest then<br>
    SendMessage(TreeView1.Handle,WM_HSCROLL,SB_LineLEF T,0);<br>
    PeekMessage(Msg,0,0,0,PM_NOREMOVE);<br>
    TreeView1.Repaint;<br>
    end;<br>
    until ((Msg.message = WM_MOUSEMOVE) or (Msg.message = WM_LBUTTONUP) or (TreeView1.Tag = 0 )) or not ((htBelow in HTest) or (htAbove in HTest) or (htToRight in HTest) or (htToLeft in HTest));<br>
    end else<br>
    TreeView1.DragCursor := crDrag;<br>
    end;<br>
    procedure TAnforderungsDBForm.TreeView1MouseUp(Sender: TObject;<br>
    Button: TMouseButton; Shift: TShiftState; X, Y: Integer);<br>
    begin<br>
    TreeView1.Tag := 0;<br>
    end;<br>

    sicherlich noch verbesserungswürdig aber hat funktioniert.<br>

    Helmu

    Comment

    Working...
    X