procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); begin with TTreeView(Sender) do begin if (Sender <> Source) or (DropTarget = nil) or (DropTarget = Selected) then exit; Selected.MoveTo(DropTarget,naAddChildFirst); end; end; procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source = Sender; if not Accept then exit; //See if scrolling is needed... with TTreeView(Sender) do begin if (Y < SCROLLMARGIN) then ScrollDirection := sdUp else if (Y > ClientHeight - SCROLLMARGIN) then ScrollDirection := sdDown else ScrollDirection := sdNone; if ScrollDirection = sdNone then Timer1.enabled := false else begin TargetWin := TWinControl(Sender); Timer1.enabled := true; end; end; end; procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source = Sender; if not Accept then exit; with TTreeView(Sender) do begin if (Y < SCROLLMARGIN) then ScrollDirection := sdUp else if (Y > ClientHeight - SCROLLMARGIN) then ScrollDirection := sdDown else ScrollDirection := sdNone; if ScrollDirection = sdNone then Timer1.enabled := false else begin TargetWin := TWinControl(Sender); Timer1.enabled := true; end; end; end; 给你个例子,不过是TreeView的
Y: Integer);
var
tmpPoint: TPoint;
tmpInt: Integer;
begin
if CheckListBox1.ItemIndex <> -1 then
begin
tmpPoint.X := X;
tmpPoint.Y := Y;
tmpInt := CheckListBox1.ItemAtPos(tmpPoint, True); if tmpInt <> -1 then
begin
CheckListBox1.Items.Move(CheckListBox1.ItemIndex, tmpInt);
CheckListBox1.Selected[tmpInt] := True;
end;
end;
end;
Y: Integer; State: TDragState; var Accept: Boolean);
事件里,但是CheckListBox闪的利害~
begin
with TTreeView(Sender) do
begin
if (Sender <> Source) or (DropTarget = nil) or
(DropTarget = Selected) then exit;
Selected.MoveTo(DropTarget,naAddChildFirst);
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source = Sender;
if not Accept then exit; //See if scrolling is needed...
with TTreeView(Sender) do
begin
if (Y < SCROLLMARGIN) then
ScrollDirection := sdUp
else if (Y > ClientHeight - SCROLLMARGIN) then
ScrollDirection := sdDown
else
ScrollDirection := sdNone; if ScrollDirection = sdNone then
Timer1.enabled := false
else
begin
TargetWin := TWinControl(Sender);
Timer1.enabled := true;
end;
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source = Sender;
if not Accept then exit;
with TTreeView(Sender) do
begin
if (Y < SCROLLMARGIN) then
ScrollDirection := sdUp
else if (Y > ClientHeight - SCROLLMARGIN) then
ScrollDirection := sdDown
else
ScrollDirection := sdNone; if ScrollDirection = sdNone then
Timer1.enabled := false
else
begin
TargetWin := TWinControl(Sender);
Timer1.enabled := true;
end;
end;
end;
给你个例子,不过是TreeView的