原贴:
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;