Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2010
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Question integer(node.data) pero en string cómo?

Buen día foreros he manejado los nodos de los treeviews en si en lo que respecta los treeview pero me tope con una problemática, antes yo manejaba puro dato numérico como primary key pero ahora me topo con strings, entonces cuando era número utilizaba Showmessage(IntToStr(Integer(node.data));
y con eso era sufiente pero ahora cuando es String el node.data cómo le hago porque intente Con String(node.data) y me ponía basura al igual que con PString entre otros alguien me puede guiar por favor gracias de antemano
Responder Con Cita
  #2  
Antiguo 10-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mrnovice.

No entiendo bién que es lo que querés mostrar, pero esto muestra el texto del nodo:
Código Delphi [-]
    ShowMessage(Node.Text);



Saludos.

Última edición por ecfisa fecha: 10-08-2010 a las 08:16:13.
Responder Con Cita
  #3  
Antiguo 10-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo mrnovice.

Me quedé pensando y era obvio que había interpretado mal tu consulta (no es raro a esta hora )

Así que supongo que querés obtener el contenido a que está apuntando el nodo no a su caption, en ese caso es:

Código Delphi [-]
    ShowMessage(String(Node.Data^));

Sin el operador '^' estabas haciendo referencia a la dirección de memoria, no al contenido.


Saludos

Última edición por ecfisa fecha: 10-08-2010 a las 09:08:31.
Responder Con Cita
  #4  
Antiguo 10-08-2010
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Question

Código Delphi [-]
readfiles(nil);


Código Delphi [-]
if Node=nil then
   begin
    begin
         QModulo.First;
         while not QModulo.Eof do
            begin
               Child:=JvCheckTreeView1.Items.AddChild(Node,'<'+Qmodulo.fieldbyname('modulo').AsString+'>');
               Child.Data:=pointer(Qmodulo.FieldByName('modulo').AsString);
               ShowMessage(child.Text);
               ShowMessage(String(child.Data)); //este sí sale correcto
               Child.HasChildren:=True;
               QModulo.Next;
            end;
     end;
   end else begin
         ShowMessage(String(Node.Data));
         ShowMessage(String(Node.Data^));
         ShowMessage(node.Text);
end;
no salió del todo y muchas gracias por tu apoyo mira el código de arriba es algo que manejo en el evento OnExpanding, como verás cuando lo agergo si sale pero lo intento expandir no sale a qué se puede deber incluso me aparece un Access Violation

Última edición por mrnovice fecha: 10-08-2010 a las 16:39:12.
Responder Con Cita
  #5  
Antiguo 10-08-2010
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Talking

algo raro pasó, supongo que ha de ser porque uso jvchecktreeview deja lo checo
Responder Con Cita
  #6  
Antiguo 10-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mrnovice.

No conozco el componente jvchecktreeview, pero supongo que no debe ser muy distinto al TTreeView.

Pareciera que el error esta en estas líneas:
Código Delphi [-]
    Child:= JvCheckTreeView1.Items.AddChild(Node,'<'+Qmodulo.fieldbyname('modulo').AsString+'>');
    Child.Data:=pointer(Qmodulo.FieldByName('modulo').AsString);
Hice una prueba simple cargando un TreeView con la tabla Country (DBDEMOS). Creo que lo que está en negrita te va a dar una pauta
para hallar la solución.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Root, Child: TTreeNode;
  Str: string;
begin
  QModulo.First;
  while not QModulo.Eof do
  begin
    Root:= TreeView1.Items.Add(nil,'<'+Qmodulo.fieldbyname('Name').AsString+'>');
    Child:= TreeView1.Items.AddChild(Root,QModulo.FieldByName('Capital').AsString);
    Str:= Qmodulo.FieldByName('Capital').AsString;
    Child.Data:= @Str; // ó igualmente: Addr(Str) 
    Root.HasChildren:=True;
    QModulo.Next;
  end;
end;

Para desreferenciar y convertir usá:
Código Delphi [-]
   string(Nodo.Data^)

Saludos.

Última edición por ecfisa fecha: 10-08-2010 a las 19:43:20.
Responder Con Cita
  #7  
Antiguo 10-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Yo también utilizo un TjvCheckTreeView y no es muy diferente al TreeView, salvo la casilla de verificación, vamos, es lo mismo. Y con esto me ayudo mucho para manejar y obtener información de un nodo.
Código Delphi [-]
//definición de datos que se adminitiran en Nodo.Data:
  type
  PInfoNodo = ^TInfoNodo;
  TInfoNodo = record
    Caption: string;
    ID: Integer;
  end;
......
//Para agregar un nuevo nodo:
var   InfoNodo: PInfoNodo;
.....
   New(InfoNodo);
   InfoNodo^.Caption := Nombre; //nombre es una variable string
   InfoNodo^.ID := 1;
   if TreeView.Selected.HasChildren then begin
    Nodo := TreeView.Items.AddChildObject(TreeView.Selected, Nombre, InfoNodo);
   end else begin
    Nodo := TreeView.Items.AddObject(TreeView.Selected, Nombre, infoNodo);
 end;
...
//Para obtener información del nodo.data
 if (TreeView.Selected.Data <> nil) then begin
   edtNodoCaption.Text := PInfoNodo(TreeView.Selected.Data)^.Caption;
   edtNodoId.Text := IntToStr(PInfoNodo(TreeView.Selected.Data)^.ID);
end;

Saludos.
__________________


Última edición por ContraVeneno fecha: 10-08-2010 a las 19:48:19.
Responder Con Cita
  #8  
Antiguo 11-08-2010
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Wink Gracias por sus respuestas

Voya checar y mañana les digo que ondas sales?
ufff le debo mucho a este foro XD muchas gracias por tener gente como ustedes saludos.
Responder Con Cita
  #9  
Antiguo 13-08-2010
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Thumbs up Resuelto

probe los dos, la diferencia es que el primer caso solamente te lo guarda en un variable y el segundo pues en el tree, utilize el segundo caso que es el de ContraVeneno jejeejeje bueno, y con eso se solucion{o
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
Integer a String en PHP noshy PHP 13 06-08-2007 19:26:36
Como Transormar un string largo a Integer largo RodoRodo Varios 1 27-06-2007 02:26:29
Como pasar de string a integer. mcalmanovici Firebird e Interbase 4 03-04-2007 18:23:47
¿Como pasar de String a Integer? astur_racing JAVA 5 13-01-2005 18:58:18
Como Convertir un dato Integer ó Float a String en FireBird???? AGAG4 Firebird e Interbase 8 04-12-2004 02:59:47


La franja horaria es GMT +2. Ahora son las 18:09:12.


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