Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2007
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
nodos del treeview

buenas, lo ke pasa es tengo una aplicacion con un treeview y necesito ke al hacer click en determinado nodo me lanze un evento o un mensaje pero ke sea diferente y propio de cada nodo. he cacharreado con las propiedades del nodo image index, selected index y state index pero no me ha salido nada.
agradesco de antemano cualkier ayuda ke me puedan brindar chao
Responder Con Cita
  #2  
Antiguo 29-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Pues resulta que la clase TTreeNode no cuenta con ningún evento que te pueda ayudar a lograr lo que buscas...

En dado caso, tienes que usar el evento OnChange del TTreeView, el cual se dispara cada que cambias de un nodo a otro... El parámetro Node de este evento contiene el nodo que se acaba de seleccionar...

Ahora, para identificar a un nodo individualmente puedes usar ya sea su propiedad ItemId, que identifica a un nodo de forma única en la colección de nodos, o puedes usar la propiedad Data de tipo Pointer en la cual puedes guardar cualquier tipo de información:

Código Delphi [-]
type
  // Tipo de dato que vas a guardar en la propiedad Data de TTreeNode
  PNodeData: TNodeData;
  
  TNodeData = record
    Nombre: string;
    Value: Integer;
  end;

// Ejemplo de como guardar información en la propiedad Data de TTreeNode
procedure TForm1.AddNode(ACaption, AName: string; AValue: Integer);
var
  Node: TTreeNode;
  NodeData: PNodeData;

begin
  Node := TreeView1.Items.Add(nil, ACaption);
  with Node do
  begin
    ImageIndex := 0;
    SelectedIndex := 1;
    StateIndex := 2;
    New(PNodeData);
    with PNodeData^ do
    begin
      Nombre := AName;
      Value := AValue
    end;
    Data := PNodeData
  end
end;

// Ejemplo de como recuperar la información de la propiedad Data de TTreeNode
procedure TForm1.TreeView1OnChange(Sender: TObject; Node: TTreeNode);
begin
  if PNodeData(Node.Data)^.ANombre = 'Nodo1' then
    ShowMessage('Seleccioné el nodo 1, con valor ' + IntToStr(PNodeData(Node.Data)^.Value))
end;

// Al destruir la forma, liberara la memoria ocupada por la propiedad Data de TTreeNode
procedure TForm1.Form1Destroy(Sender: TObject);
var
  I: Integer;
  NodeData: PNodeData;

begin
  for I := 0 to Pred(TreeView.Items.Count) do
  begin
    if Assigned(TreeView1.Items[i].Data) then
    begin
      NodeData := TreeView1.Items[i].Data;
      Dispose(NodeData)
    end
  end
end;

Espero que con estos ejemplos puedas lograr lo que desees...


Saludos...
Responder Con Cita
  #3  
Antiguo 29-08-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Simplicidad ante todo.
Si todos los nodos tienen diferente texto y sabes el texto que buscas simplemente deberías hacer:
Código Delphi [-]
procedure TForm1.TreeView1Click(Sender: TObject);
begin
  if TreeView1.Selected.Text:='Texto del nodo' then...
De otro modo si lo que deseas identificar al nodo por su nivel y número usarías:
Código Delphi [-]
procedure TForm1.TreeView1Click(Sender: TObject);
begin
  if (TreeView1.Selected.Level =0) and (TreeView1.Selected.Index =0) then...
donde para identificar el nodo usas Level que es el nivel del nodo (0 para el primer nivel, 1 para el segundo y así sucesivamente) e index que es su ubicación en ese nivel (0 para el primer nodo de ese nivel, 1 para el segundo y sucesivamente).
Espero soluciones tu problema.
Responder Con Cita
  #4  
Antiguo 29-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Este ejemplo, sencillo, te puede dar una idea mas clara de como funcionan los eventos en un treeView, puedes jugar con esto, usando otros eventos, es realmente sencillo.
Espero te sirva.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 24-01-2008 a las 18:53:50.
Responder Con Cita
  #5  
Antiguo 04-09-2007
Buelos Buelos is offline
Miembro
 
Registrado: jun 2007
Posts: 51
Poder: 17
Buelos Va por buen camino
muchisisisisisisisimas gracias

muchisisismas gracias a todos por sus respuestas me fueron de gran utilidad y gracias a eso ya pude solucionar mi problema, kedo altamente agradecido por el tiempo dedicado a ayudarme con mi duda gracias y chao
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
Problemas con el TreeView y los nodos Gustavo Gowdak OOP 5 23-09-2007 17:44:19
saber que Nodos hijo pulse en TreeView DISAC_FIGO OOP 2 18-01-2007 19:34:28
Accesos de Usuarios a Nodos de TreeView Maury Manosalva OOP 0 09-09-2005 22:00:28
Como utilizar el Treeview, desplegar la info del arbol binario al treeview leo21 OOP 1 08-04-2004 22:42:44
TreeView y colores para los nodos gqxns Varios 2 20-01-2004 12:28:31


La franja horaria es GMT +2. Ahora son las 21:17:58.


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