2つのTreeview


初心者  2010-06-18 22:23:50  No: 38688  IP: 192.*.*.*

皆さん教えて頂きたいことがあります。
Treeviewを2つ並べて右から左にだけドラッグ&ドロップをさせるプログラムを開発中です。
同一Treeviewの中ならドラッグ&ドロップできるのですが、異なるTreeviewからのドラッグ&ドロップがうまくいきません。
どうしたらよいのでしょうか?
お願いします。

編集 削除
HOta  2010-06-19 08:59:50  No: 38689  IP: 192.*.*.*

>うまくいきません。
はどのようにうまくいかないのか、どんなコードかを見せてください。

非常に分かり難いです。

編集 削除
初心者  2010-06-19 10:03:25  No: 38690  IP: 192.*.*.*

すいません。そもそもどんな記述をしたらよいかわからないのです。
サンプルがあると助かります。

編集 削除
monaa  2010-06-19 11:33:28  No: 38691  IP: 192.*.*.*

コントロール間のドラッグ&ドロップは方法が2種類あります、
OLEと呼ばれるアプリケーション間でも行える方法と
自分自信のアプリケーション内でしか行えない方法です。
さらに、両方ともドラッグ&ドロップで何を送り合うのかも考えなくてはなりません、後は、その作業がコピー、移動なのかも必要ですね。
OLEは初心者にとっては鬼門です。コンポーネントが複数公開されていますが、それだけでは理解は難しいと思います、
自分のコントロール間はVCLイベントが用意されています、
当然内容が千差万別なのでそれ以外は自力で書かないといけません。
等を含めてもう一度予習した上でやりたい事を書いてみてはどうでしょうか。

編集 削除
KHE00221  2010-06-19 16:33:09  No: 38692  IP: 192.*.*.*

こんなこと?

コピー元に子があってもコピーしない

procedure TForm6.FormCreate(Sender: TObject);
begin
    TreeView1.DragMode := dmAutoMatic;
    TreeView2.DragMode := dmAutoMatic;

    TreeView2.OnDragDrop := TreeView1DragDrop;
    TreeView2.OnDragOver := TreeView1DragOver;
end;

procedure TForm6.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
    TreeNode : TTreeNode;
    S: String;
    I: Integer;
begin
    if Source is TTreeView then
    begin
      if Assigned(TTreeView(Source).Selected) = True then
      begin
        S := TTreeView(Source).Selected.Text;
        TreeNode := TTreeView(Sender).GetNodeAt(X,Y);
        if Assigned(TreeNode) = True then
        begin
          TTreeView(Sender).Items.AddChild(TreeNode,S);
        end;
      end;
    end;
    Exit;
end;

procedure TForm6.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    Accept := True;
end;

編集 削除
いけ  2010-06-19 23:35:54  No: 38693  IP: 192.*.*.*

>同一Treeviewの中ならドラッグ&ドロップできる
だったら、そんなに変らないと思うけど?
どんなソースなの?

編集 削除