原贴:
http://topic.csdn.net/u/20080718/13/165e9aad-ad40-4ed2-83a6-2558a07afbcf.html
左边是treeview,是部门类别,右边是dbgrieh,是员工,我想实现将员工拖动进入treeview中,最好有代码呀
代码来了!……亲测无误,需要源码可以发信息给我。给分谢谢! :-)
http://topic.csdn.net/u/20080718/13/165e9aad-ad40-4ed2-83a6-2558a07afbcf.html
左边是treeview,是部门类别,右边是dbgrieh,是员工,我想实现将员工拖动进入treeview中,最好有代码呀
代码来了!……亲测无误,需要源码可以发信息给我。给分谢谢! :-)
-
Delphi(Pascal) code
-
var
sgc : TGridCoord; // 拖曳源的Grid信息
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.TreeView1.FullExpand; // 把节点都展开了才好拖放啊
end ;
procedure TForm1.DBGridEh1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
sgc : = DBGridEh1.MouseCoord(X,Y) ; // 得到鼠标按下位置的Grid信息
if (sgc.X > 0 ) and (sgc.Y > 0 ) then // x和y都大于0表示是正常的DataCell而不是Header
DBGridEh1.BeginDrag(false); // 开始Drag
end ;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept : = (Source is TDBGridEh); // 只要是从DBGridEh拖过来的就接收
end ;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
pNode:TTreeNode;
begin
pNode : = TTreeView(Sender).GetNodeAt(X,Y); // 根据Drop位置找到节点
with (Source as TDBGridEh).DataSource.DataSet do begin
{ 把源Grid的数据作为子节点增加进TreeView中,要把变化更新到数据库也是在这里做的 }
TTreeView(Sender).Items.AddChild(pNode, Fields[sgc.X - 1 ].AsString );
end ;
if pNode <> nil then pNode.Expand(false); // 展开新的节点
end ;