2つのTreeview


初心者  2010-06-19 07:23:50  No: 38688

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


HOta  2010-06-19 17:59:50  No: 38689

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

非常に分かり難いです。


初心者  2010-06-19 19:03:25  No: 38690

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


monaa  2010-06-19 20:33:28  No: 38691

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


KHE00221  2010-06-20 01:33:09  No: 38692

こんなこと?

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

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-20 08:35:54  No: 38693

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加