皆さん教えて頂きたいことがあります。
Treeviewを2つ並べて右から左にだけドラッグ&ドロップをさせるプログラムを開発中です。
同一Treeviewの中ならドラッグ&ドロップできるのですが、異なるTreeviewからのドラッグ&ドロップがうまくいきません。
どうしたらよいのでしょうか?
お願いします。
>うまくいきません。
はどのようにうまくいかないのか、どんなコードかを見せてください。
非常に分かり難いです。
すいません。そもそもどんな記述をしたらよいかわからないのです。
サンプルがあると助かります。
コントロール間のドラッグ&ドロップは方法が2種類あります、
OLEと呼ばれるアプリケーション間でも行える方法と
自分自信のアプリケーション内でしか行えない方法です。
さらに、両方ともドラッグ&ドロップで何を送り合うのかも考えなくてはなりません、後は、その作業がコピー、移動なのかも必要ですね。
OLEは初心者にとっては鬼門です。コンポーネントが複数公開されていますが、それだけでは理解は難しいと思います、
自分のコントロール間はVCLイベントが用意されています、
当然内容が千差万別なのでそれ以外は自力で書かないといけません。
等を含めてもう一度予習した上でやりたい事を書いてみてはどうでしょうか。
こんなこと?
コピー元に子があってもコピーしない
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;
>同一Treeviewの中ならドラッグ&ドロップできる
だったら、そんなに変らないと思うけど?
どんなソースなの?
ツイート | ![]() |