要求:
一个PageControl分成2页,每个PageControl页中分别放一个Listview,将其中的一个ListView中选中的item拖曳操作,可在另一个PageControl页中ListView中生成同样的一个item.

解决方案 »

  1.   

    拖拽时,首先要把目标listview所在的page设为活动页
      

  2.   

    设置ListView2.DragMode := dmAutomatic;窗体上放置pagecontrol,两个页签,TabSheet1和TabSheet2,上面分别有一个listviewunit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls;type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        ListView1: TListView;
        ListView2: TListView;
        procedure PageControl1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.PageControl1DragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    var
      rect:TRect;
    begin
      Accept := True;
      rect := PageControl1.TabRect(0);
      if (x>rect.Left) and (x<rect.Right) and (y>rect.Top) and (y<rect.Bottom) then
        PageControl1.ActivePageIndex := 0;
    end;procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := True;
    end;procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      with ListView1.Items.Add do
      begin
        Caption := ListView2.Selected.Caption;
      end;
    end;end.