Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Poder: 0
jesconsa Va por buen camino
¿Cómo manejar un VirtualTreeView?

Hola. Necesito usar un TreeView asociado/conectado a una base de datos, editando el Tree el cambio debe quedar reflejado en la base de datos y viceversa. Las mejores opciones que veo son el JvDBTreeView de las componentes Jedi y el VirtualTreeView que es mas farragoso. El problema de la primera es que no veo a nadie que las haya usado y el ejemplo es bastante criptico. El VirtualTreeView es bastante farragoso si quiero hacer cualquier cosa. Cual me aconsejais?..Habeis trabajado con alguno?....

Muchas gracias
Saludos

Jesus
Responder Con Cita
  #2  
Antiguo 20-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, recuerda poner títulos descriptivos a tus preguntas, gracias.
Responder Con Cita
  #3  
Antiguo 20-03-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Cita:
Empezado por jesconsa Ver Mensaje
Hola. Necesito usar un TreeView asociado/conectado a una base de datos, editando el Tree el cambio debe quedar reflejado en la base de datos y viceversa. Las mejores opciones que veo son el JvDBTreeView de las componentes Jedi y el VirtualTreeView que es mas farragoso. El problema de la primera es que no veo a nadie que las haya usado y el ejemplo es bastante criptico. El VirtualTreeView es bastante farragoso si quiero hacer cualquier cosa. Cual me aconsejais?..Habeis trabajado con alguno?....
Jesus
Hola Jesús. Yo trabajo con JvDBTreeView, aunque le tengo desactivadas las opciones de arrastrar y soltar ya que no he conseguido que funcionen bien. Le he modificado algo el procedimiento de añadir nodos ya que uso un procedimiento almacenado de firebird. Por lo demás hace su papel aunque de apariencia es mucho más soso que el otro que pones, que también usé alguna vez pero que a mi también se me hace muy complicado manejar. Por sencillez el primero. Por posibilidades y apariencia, el segundo.

Un saludo.
__________________
http://www.gestionportable.com
Responder Con Cita
  #4  
Antiguo 20-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Poder: 0
jesconsa Va por buen camino
Tree y DB

Ok Casimiro. Gracias pacopenin. Como hiciste para usar el JvDBTreeView?, algun ejemplo en el cual te basaste?, donde aprendiste a utilizarlo? algun tutorial?.....

Muchas gracias
Saludos

Jesus
Responder Con Cita
  #5  
Antiguo 20-03-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
No hay mucho que explicar. Te adjunto una captura de pantalla :



Es un árbol de plantillas de texto organizados por carpetas. El campo TIPO identifica si es una carpeta(1) o una plantilla(3) y lo utilizo para el icono dentro del árbol. Del resto no se que más comentar.
__________________
http://www.gestionportable.com
Responder Con Cita
  #6  
Antiguo 20-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Poder: 0
jesconsa Va por buen camino
Tree y DB

Gracias por la captura pacopenin. Entiendo lo que haces, No puedo creer que sea asi de sencillo. Pero hay algo que no entiendo...Esto esta bien para una relacion Master/Padre Detail/Hijo ...pero si quiero mas niveles?...como se haria?....No veo ninguna propiedad que de a pensar que se puedan obtener arboles de mas de dos niveles (un nivel de padres y otro de hijos)....

Gracias
Saludos

Jesus
Responder Con Cita
  #7  
Antiguo 20-03-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Puede tener los niveles que quieras. Si añado un nodo (11) y pongo como padre 10 me lo pondrá dentro de la carpeta "Otra carpeta". Normalmente yo bloqueo que no se puedan borrar los dos primeros nodos, para que siempre tenga que estar seleccionado un nodo que haga de padre, y en su defecto el 0 que es el valor de la propiedad StartMasterValue. Para añadir un nodo utilizo lo siguiente :

Código Delphi [-]
procedure TFCarpetas.btNewFolderClick(Sender: TObject);
var
  carpeta : String;
  New : TJvDBTreeNode;
  Node: TTreeNode;
begin
  carpeta := '';
  if InputQuery(buscaTraduccion('330'), buscaTraduccion('331'), carpeta) then
    begin
       node := Arbol.Selected;
       New := Arbol.MyAddChildNode(node, True, 0, carpeta, 1);
    end
end;

Como ves, se llama a la función MyAddChildNode que he modificado de la original añadiendo dos o tres parámetros más.

A ver si te sirve.
__________________
http://www.gestionportable.com
Responder Con Cita
  #8  
Antiguo 22-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Poder: 0
jesconsa Va por buen camino
Tirar la toalla con VirtualTreeView

Hola. Estoy tratando de "domar" al Virtual TreeView pero es un hueso duro de roer, tanto que estoy a punto de tirar la toalla. He visto todos los enlaces, todos los ejemplos y hay cosas que no acabo de entender. El VirtualTreeView esta hecho como sabeis para que se creen nodos raiz y a partir de ahi todos los demas. Los datos de dichos nodos van aparte y se pueden crear en el evento OnInit, cuando se crea el arbol o cuando quieras, mostrando cada nodo su texto mediante OnGetText. Todo esto esta bien hasta que llegamos a la parte de seguir añadiendo nodos a los nodos raiz.....Algo asi no funciona:

Código Delphi [-]
 try
    Nodo := Form1.VST1.GetFirst;
    while Assigned(Nodo) do
    begin
      Form1.VST1.Selected[Nodo] := True;

  //for I := 1 to Form1.FDTable10.RecordCount do
   //   begin

         N2:=Form1.VST1.GetNodeData(Nodo);
         S1:=N2.Id;
         Form1.FDTable11.First;
         while not Form1.FDTable11.Eof do
           begin
              S2:=Form1.FDTable11['Parent'];
              if S2=S1 then begin
                  N:=nil;
                  //N.NCaption := Form1.FDTable11.FieldByName('Cities').asString;
                  //N.Chk:= Form1.FDTable11.FieldByName('Selected').AsBoolean;
                  N.Id:= StrToInt(Form1.FDTable11['Id']);
                  añade_nodo(Form1.VST1,Nodo,N);
                  Initialize(N^);
              end;
              Form1.FDTable11.Next;
           end;
      end;


       Nodo := Form1.VST1.GetNextSibling(Nodo);
    //end;
  finally
    Form1.VST1.EndUpdate;
  end;

Lo que voy haciendo en este codigo es lo siguiente: Tengo 3 tabalas cada una para un nivel del arbol . Lo he hecho asi para que en tiempo de ejecucion sea muy facil añadir nodos (registros) a las tablas. En el codigo busco los nodos hijo de un padre determinado comparando los campos 'ID' de cada registro de la tabla de registros hijo con un 'Id' determinado de la tabla de registros raiz. Pues bien, cuando detecta que un hijo pertenece a un padre no me deja coger dicho registro de la tabla de hijos. En añade_nodo tengo todo para crear el nodo hijo (AddCHild, etc) pero no llega a hacerlo por este error.


Código Delphi [-]

N.NCaption := Form1.FDTable11.FieldByName('Cities').asString;

Aqui es donde da un error...He tratado de coger dicho dato con un Dataurce o otro Dataset pero no hay manera. Cualquier ayuda es bienvenida y agradecida.

Muchas gracias

Saludos
Responder Con Cita
  #9  
Antiguo 22-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, no abras otro hilo para tratar el mismo tema, gracias.
Los he unido
Responder Con Cita
  #10  
Antiguo 22-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Poder: 0
jesconsa Va por buen camino
VirtualTreeView

Ok, disculpa Casimiro.

Gracias
Saludos
Responder Con Cita
  #11  
Antiguo 22-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jesconsa Ver Mensaje
Saludos

Le he cambiado el título para que sea más fácil de identificar por quien pueda ayudar.
Si prefieres otro título, lo dices
Responder Con Cita
  #12  
Antiguo 23-03-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Hola Jesús. Hace muchos años que no uso VST, pero mirando un proyecto antiguo te mando lo que hacía para cargar un árbol de un sólo nivel. No llegué a explorar mucho más allá. A ver si te sirve.

Código SQL [-]
procedure TFListados.iniciaArbol;
var
  Data1 : PEntryData;
  Node1: PVirtualNode;
  NewNode : PVirtualNode;
begin

     VST.BeginUpdate;
     VST.Clear;

     VST.RootNodeCount := 0;

     Node1 := VST.AddChild(VST.RootNode);

     Data1 := PEntryData(VST.GetNodeData(Node1));
     Data1.Titulo := 'Listados';

     Dat.cdInf.close;
     Dat.cdInf.Params.ParamByName('GRUPO').asInteger := Grupo;
     Dat.cdInf.open;

     VST.Selected[VST.TopNode] := true;
     VST.FocusedNode := VST.TopNode;

     while NOT Dat.cdInf.EOF do
       begin
          NewNode := VST.AddChild(VST.FocusedNode);
          with PEntryData(VST.GetNodeData(NewNode))^ do
            begin
               Titulo  := Dat.cdInfNOMBRE.value;
               Informe := Dat.cdInfINFORME.value;
               Id      := Dat.cdInfUSER_FLAG.value;
               Tipo    := Dat.cdInfTIPO.value;
            end;
          Dat.cdInf.Next;
       end;

     VST.EndUpdate;

     VST.FullExpand;
end;
__________________
http://www.gestionportable.com
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Componente VirtualTreeView katuxa OOP 1 20-03-2009 17:39:46
Tutorial del VirtualTreeview Chandra OOP 5 02-05-2007 18:56:41
Como manejar marcos en C#? JuanErasmo .NET 0 19-01-2007 01:17:33
VirtualTreeview porreres Varios 8 19-09-2005 13:05:39
como manejar VIDEO ? ... ingel Varios 0 03-10-2003 21:17:38


La franja horaria es GMT +2. Ahora son las 17:30:04.


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