Como cargar los un TreeView desde una tabla SQL
Hola a todos, como estan?, espero me puedan ayudar con el siguiente problema :confused:, pasa que quiero agregar un TTreeView a mi programa que muestre las instancias y sub instancias de un inventario, es decir, que lo muestre algo así:
+Instancia1 -SubInstancia1.1 -SubInstancia1.2 +Instancia2 -SubInstancia2.1 -SubInstancia2.2 Pero necesito que tome los datos de una tabla la cual esta en SQL, la tabla esta estructurada de la siguiente manera: CREATE TABLE [dbo].[SAINSTA]( [CodInst] [int] IDENTITY(1,1) NOT NULL, [InsPadre] [int] NOT NULL, [Nivel] [int] NOT NULL, [TipoIns] [smallint] NOT NULL, [Descrip] [varchar](40) NOT NULL, [Descto] [decimal](28, 4) NOT NULL, [DEsComp] [smallint] NOT NULL, [DEsSeri] [smallint] NOT NULL, [DEsLote] [smallint] NOT NULL, [DEsComi] [smallint] NOT NULL, [DEsCorrel] [smallint] NOT NULL, [DigitosC] [smallint] NOT NULL, [DEsTabla] [smallint] NOT NULL, [CodAlte] [varchar](15) NULL, Donde Descrip es el nombre de la instancia, InsPadre seria lo que indica el nodo padre de la instancia y CodInst es el codigo individual de cada una, o mejor dicho, el nodo. He probado usando este codigo que encontre en un foro parecido: procedure TfPruebaComponentes.FormCreate(Sender: TObject); var i,x,n:integer; Nod : TTreeNode; NodSuplementario : TTreeNode; MiPunteroInteger : ^integer; begin FDQuery1.Close; FDQuery1.Open; FDQuery1.Last; n:=FDQuery1.RecordCount; FDQuery1.First; for x:=0 to (n-1) do begin i:=FDQuery1.FieldByName('nodo_padre').AsInteger; if i=0 then begin Nod:=TreeView1.Items.Add (nil,FDQuery1.FieldByName('opc_Descripcion').asstring); New(MiPunteroInteger); MiPunteroInteger^:=FDQuery1.Fieldbyname('nodo').asinteger; nod.Data:=MiPunteroInteger; nod.Selected :=true; end Else begin n:=TreeView1.Items.Count-1; While MiPunteroInteger(TreeView1.Items[n].Data)^ <> i do Dec(n); nodSuplementario:=TreeView1.Items.AddChild(TreeView1.Items[N],FDQuery1.FieldByName('opc_Descripcion').asstring); New(MiPunteroInteger); MiPunteroInteger^:= FDQuery1.Fieldbyname('nodo').asinteger; nodSuplementario.Data:=MiPunteroInteger; Nod.selected:=True; Nod.Expanded:=False; end; FDQuery1.Next; end; end; Pero la verdad no me sirve bien y incluso me marca un error de compilación en el While do :(. He estado buscando por mucho y la verdad espero que me lean y me puedan ayudar con este problema muchas gracias :D:D. |
Estimado Diego200519, bienvenido a club delphi...lea la guía de estilo...lo llamaran al orden en breve...
|
Cita:
Pero sí, no olvides leer nuestra guía de estilo, gracias. Y recuerda usar las etiquetas cuando pongas código, por ejemplo: |
hola!,
intentalo con esta rutina Código:
EJEMPLO:
|
Buenos días bucanero, me complace decirte que la solución que me has propuesto me funciono :D, lamento no haber visto tu respuesta antes, pero si, efectivamente es lo que estaba buscando, mil gracias :D ^\||/
|
La franja horaria es GMT +2. Ahora son las 07:03:34. |
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