Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2005
Gabriel2 Gabriel2 is offline
Miembro
 
Registrado: sep 2004
Posts: 108
Poder: 20
Gabriel2 Va por buen camino
Arrastrar y soltar en un TreeView

Hola compañeros del foro.

Utilizo Delphi 7. Mi ide es poder mover los nodos en un TreeView de una rama a otra. Su estructura es de varias ramas con 4 o 5 niveles. Busque en el foro y encontre código para poder realizarlo. He probado y no consigo hacerlo.

Código:
procedure TForm1.MenusDragDrop(Sender, Source: TObject; X, Y: Integer);
var
   AnItem: TTreeNode;
   AttachMode: TNodeAttachMode;
   HT: THitTests;
begin
  if Menus.Selected = nil then Exit;
  HT := Menus.GetHitTestInfoAt(X, Y) ;
  AnItem := Menus.GetNodeAt(X, Y) ;
  if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent]<> HT) then
  begin
	if (htOnItem in HT) or (htOnIcon in HT) then AttachMode := naAddChild
  else if htNowhere in HT then AttachMode := naAdd
  else if htOnIndent in HT then
	AttachMode := naInsert;
	Menus.Selected.MoveTo(AnItem, AttachMode) ;
  end;
end;
Esta es la pagina en donde esta el código.

Saludos. Gracias...
Responder Con Cita
  #2  
Antiguo 08-12-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Gabriel2 aqui te pongo un ejemplo espero te sirva.
Archivos Adjuntos
Tipo de Archivo: zip dragdropArbol.zip (6,0 KB, 78 visitas)
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 09-12-2005
Gabriel2 Gabriel2 is offline
Miembro
 
Registrado: sep 2004
Posts: 108
Poder: 20
Gabriel2 Va por buen camino
Gracias y una consultita màs sobre TreeView

Primero que todo gracias...

Lo que necesito es armar un arbol con datos de una DB. De que forma lo podría armar. Por ejemplo: Tengo el registro 1000 de nivel 0 que es el que inicia el arbol, dentro de este se encuentra el registro 1100 y 1200 que son ramas del 1000 y son de nivel 1, dentro de 1100 se encuentra 1110 de nive 2 que es una rama de 1100...

En forma más gráfica:

Nivel-0 Nivel-1 Nivel-2

1000......--->....1100.....--->......1110
.
...--->....1200

2000......--->....2100.....--->......2110
.
...--->....2200.....--->......2210

Qué datos guardarías en una DB para luego crear los Nodos y cómo los crearías?
Responder Con Cita
  #4  
Antiguo 09-12-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola
Los campos que yo tendria en mi BD serian codigo, descripcion, nivel de tipo string, puedes tener otros mas pero esos me parecen los que te armarian el arbol.

Lo que se me ocurre que puede ser que no sea lo mejor pero aqui te lo pongo, alguien que encuentre una solución mejor supongo que te respondera tambien.

Crear un archivo con tabulaciones en base al nivel osea:
nivel 1 -> ninguna tabulacion
nivel 2 -> 1 tabulacion
nivel 3 -> 2 tabulaciones
y asi sucesivamente porque tu arbol puede tener n niveles


Código Delphi [-]
var
archivo:TextFile;
begin
ruta:=ExtractFileDir(Application.ExeName) + '\' + 'arch.txt';
ASSIGNFILE(archivo,ruta);
ReWrite(Archivo);
 
sql:='SELECT codigo, descripcion, nivel FROM tabla ORDER BY codigo';
//pones todo lo demas para ejecutar la consulta
 
qry.First;
while not(qry.Eof) do
begin
codigo:=qry.Fields[0].AsString;
descripcion:=qry.Fields[1].AsString;
nivel:=qry.Fields[2].AsString;
 
//lo que aparecera en tu arbol sera la descripcion con esta linea 
//te lo ira poniendo las tabulaciones segun el nivel 
descripcion_fin:=StringofChar(#32,strtoint(nivel)-1)+descripcion;
WriteLn(Archivo,descripcion_fin);
qry.Next;
end;

con eso tendrias tu archivo creado con tabulaciones y todo ahora seria cargarlo dentro del arbol que seria de esta forma

Código Delphi [-]
TreeView.LoadFromFile(ExtractFilePath(Application.ExeName)+'arch.txt');

conste suponiendo que estamos manteniendo la codificación del codigo que pusiste y que seria de tipo string para que te lo ordene de la forma que tu quieres, otra forma seria hacerlo recursivo pero nose como, eso seria espero te sirva chausito.
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:05:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi