Dios cuanta incultura que trajino por ahi...
En resumen, he incorporado tal cual el Formulario que viene con el ejemplo de Marco Cantú a mi proyecto .NET y tachánnn! sorpresa porque ningun problema de mezclar classes TTreeView con proyectos.net. Es mas, no hay problema con mezclar units .NET i win32!
Esto es la leche!
Se me ha abierto un mundo de clases que tenia por desaprovechadas por una falta de conocimiento al respecto...que inculto soy...
Si alguien necesita implementar algo parecido le pasteo el codigo que ya advierto que es de marco cantú..(espero que no incumpla ningún copyright chungo por pastear esto...y si lo incumplo no me lo tengáis en cuenta
Código:
unit TreeForm;
interface
{$WARN UNIT_PLATFORM OFF}
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Menus;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
MainMenu1: TMainMenu;
Options1: TMenuItem;
File1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
Root1: TMenuItem;
Buttons1: TMenuItem;
Lines1: TMenuItem;
N1: TMenuItem;
Font1: TMenuItem;
FontDialog1: TFontDialog;
ExpandAll1: TMenuItem;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Root1Click(Sender: TObject);
procedure Buttons1Click(Sender: TObject);
procedure Lines1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Font1Click(Sender: TObject);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ExpandAll1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.LoadFromFile (
ExtractFilePath (Application.ExeName) + 'TreeText.txt');
end;
procedure TForm1.About1Click(Sender: TObject);
begin
MessageDlg ('DragTree Example'#13'by Marco Cantù',
mtInformation, [mbOk], 0);
end;
procedure TForm1.Root1Click(Sender: TObject);
begin
TreeView1.ShowRoot := not TreeView1.ShowRoot;
Root1.Checked := TreeView1.ShowRoot;
end;
procedure TForm1.Buttons1Click(Sender: TObject);
begin
TreeView1.ShowButtons := not TreeView1.ShowButtons;
Buttons1.Checked := TreeView1.ShowButtons;
end;
procedure TForm1.Lines1Click(Sender: TObject);
begin
TreeView1.ShowLines := not TreeView1.ShowLines;
Lines1.Checked := TreeView1.ShowLines;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Font1Click(Sender: TObject);
begin
if FontDialog1.Execute then
TreeView1.Font := FontDialog1.Font;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode: TTreeNode;
begin
TargetNode := TreeView1.GetNodeAt (X, Y);
// accept dragging from itself
if (Source = Sender) and (TargetNode <> nil) then
begin
Accept := True;
// determines source and target
SourceNode := TreeView1.Selected;
// look up the target parent chain
while (TargetNode.Parent <> nil) and
(TargetNode <> SourceNode) do
TargetNode := TargetNode.Parent;
// if source is found
if TargetNode = SourceNode then
// do not allow dragging over a child
Accept := False;
end
else
Accept := False;
end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject;
X, Y: Integer);
var
TargetNode, SourceNode: TTreeNode;
begin
TargetNode := TreeView1.GetNodeAt (X, Y);
if TargetNode <> nil then
begin
SourceNode := TreeView1.Selected;
SourceNode.MoveTo (TargetNode, naAddChildFirst);
TargetNode.Expand (False);
TreeView1.Selected := TargetNode;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TreeView1.SaveToFile (
ExtractFilePath (Application.ExeName) + 'TreeText.txt');
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TreeView1.BeginDrag (False);
end;
procedure TForm1.ExpandAll1Click(Sender: TObject);
begin
// either:
TreeView1.FullExpand;
// or:
// TreeView1.Items [0].Expand(True);
end;
end.
Ale grácias de todos modos.