怎样拖放 CheckListBox 里面的Items 调整其内部顺序

解决方案 »

  1.   

    CheckListBox是什么东东?我怎么没有找到呢?
      

  2.   

    procedure TForm1.CheckListBox1DragDrop(Sender, Source: TObject; X,
      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;
      

  3.   

    对了,DragMode 属性设为dmAutomatic
      

  4.   

    可以放到procedure TForm1.CheckListBox1DragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    事件里,但是CheckListBox闪的利害~
      

  5.   

    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的
      

  6.   

    zzh54zzh(我也要补钙!)   老兄, 我试了一下, 好像不行啊,