Ver Mensaje Individual
  #1  
Antiguo 07-06-2006
XaRz XaRz is offline
Miembro
 
Registrado: ene 2006
Posts: 13
Reputación: 0
XaRz Va por buen camino
TreeView Drag and Drop en Delphi.net

Hola a todos,

Estoy intentando hacer funcionar un drag and drop para un treeview programado con TTreeView que funcione para un control TreeView de .NEt.

Lo he intentado de varias formas...la última a través del código de Marco Cantu del libro Mastering Delphi 2005 que va como sigue:
Código:
procedure EquipCom.TreeView1_DragDrop(sender,source: System.Object; e: System.Windows.Forms.DragEventArgs;
        point:System.Drawing.point);
var
 TargetNode,SourceNode:TTreeNode;
begin
    TargetNode:=treeView1.GetNodeAt(point);
    if TargetNode <> nil then
    begin
      SourceNode:=TreeView1.SelectedNode;
      SourceNode.MoveTo(targetNode,naAddChildFirst);
      TargetNode.Expand(False);
      treeView1.SelectedNode:=TargetNode;
    end;

end;

procedure EquipCom.TreeView1_DragOver(sender,source: System.Object;point:System.Drawing.point;
      state:TDragState;var Accept:boolean; e: System.Windows.Forms.DragEventArgs);
var
TargetNode,SourceNode:TTreeNode;
begin
      TargetNode:=TreeView1.GetNodeAt(Point);
      if ((source=Sender) AND(targetNode <> nil)) then
      begin
        Accept:=True;
        SourceNode:=TreeView1.SelectedNode;
        while (targetNode.Parent<> nil) and (targetNode<> SourceNode) do
        begin
          targetNode:=TargetNode.Parent;
        end;
        if TargetNode = SourceNode then
        Accept:=False;
      end
      else Accept:=False;
end;
Pero claro, hay cosas que de calle no están bien para .NET, por ejemplo en
Código:
SourceNode:=TreeView1.SelectedNode;
nos darà un problema de tipos ya que: en
Código:
var
TargetNode,SourceNode:TTreeNode;
le estamos definiendo un TTreeNode que no es lo mismo que un TreeNode en .NET
Aparte el compilador se queja cuando le assigno al drag&drop cabeceras diferentes de:
Código:
procedure EquipCom.TreeView1_DragOver(sender: System.Object;
e: System.Windows.Forms.DragEventArgs);
En mi caso la cabecera que intento assignarle al DragOver es:
Código:
procedure EquipCom.TreeView1_DragOver(sender,source: System.Object;point:System.Drawing.point;
      state:TDragState;var Accept:boolean; e: System.Windows.Forms.DragEventArgs);
.

En fin, si alguna lumbrera me puede orientar..yo lo único que desearia són acciones de drag&drop en un treeview. Pero estoy encallado.

Ala,saludos y gracias por adelantado.
Responder Con Cita