代码如下,默认为第一个节点a获得焦点,我想将edit中的内容拖到C节点,使C节点的text改为edit中的内容,但是在拖曳状态下,无法选中C节点,
请高手指示,谢谢!unit testunit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
procedure FormShow(Sender: TObject);
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
var
node1:ttreenode;
begin
edit1.Text:='test';
Node1:=TreeView1.Items.Addchild(nil,'c');
end;procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then
(sender as Tedit).begindrag(false);end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is Tedit) then
Accept:=true;end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
infoname1:string;
begin
if (Sender is TTreeView) and (Source is Tedit) then
begin
infoname1:=(Sender as TTreeView).Selected.Text;
showmessage(infoname1);
end;end;end.
请高手指示,谢谢!unit testunit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
procedure FormShow(Sender: TObject);
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
var
node1:ttreenode;
begin
edit1.Text:='test';
Node1:=TreeView1.Items.Addchild(nil,'c');
end;procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then
(sender as Tedit).begindrag(false);end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is Tedit) then
Accept:=true;end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
infoname1:string;
begin
if (Sender is TTreeView) and (Source is Tedit) then
begin
infoname1:=(Sender as TTreeView).Selected.Text;
showmessage(infoname1);
end;end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationvar
Node1:TTreeNode; //注意这里,将Node1定义成全局变量{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
TEdit(Sender).BeginDrag(false);
end;procedure TForm1.FormShow(Sender: TObject);
//var
//Node1:TTreeNode;
begin
Edit1.Text:= 'test';
Node1:=TreeView1.Items.Addchild(nil, 'c ');
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
infoname1:string;
begin
if (Sender is TTreeView) and (Source is TEdit) then
begin
TreeView1.Selected:=Node1; //改变当前的选定节点
infoname1:=(Sender as TTreeView).Selected.Text;
ShowMessage(infoname1);
end;
end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TEdit) then
Accept:=true;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationvar
Node1:TTreeNode;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
TEdit(Sender).BeginDrag(false);
end;procedure TForm1.FormShow(Sender: TObject);
//var
//Node1:TTreeNode;
begin
Edit1.Text:= 'test';
Node1:=TreeView1.Items.Addchild(nil, 'c ');
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Sender is TTreeView) and (Source is TEdit) then
begin
TreeView1.Selected:=Node1;
TreeView1.Selected.Text:=TEdit(Source).Text;
end;
end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TEdit) then
Accept:=true;
end;end.上面代码实现了“在拖曳状态下,使C节点的Text改为Edit1中的内容”。
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
Node: TTreeNode;
begin
if (Sender is TTreeView) and (Source is TEdit) then begin
Node := TreeView1.GetNodeAt(X, Y);
if not(Node = Nil) then Node.Text := TEdit(Source).Text;
end;
end;