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 22-07-2007
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Imagenes en un TREEVIEW

Hola Amigos.

Estoy trabajando un TreeView, y he estado buscando la forma de agregarle una imagen a cada nodo, dependiendo del titulo del nodo es la imagen que necesito poner.

Hasta el momento he logrado agregarle imagenes al TreeView por medio de un ImageList donde he agregado todas las imagenes que necesito, para esto en la propiedad images le asocie el componente del ImageList, pero cada vez que selecciono un NODO me cambie de imagen....y no se porque.

Hagan de cuenta que tengo los siguiente: Un cliente tiene varias notas de servicios realizados por una lavanderia, por cada nota se le realiza un nodo, y a su vez estas tienen tantos nodos como servicios tenga la nota.....entonces necesito saber como hacerle para que cuando yo seleccione un servicio no me cambie la imagen con otra q se encuentra dentro del ImageList.....

Les agredezco la ayuda que me proporcionen....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 22-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Y no ocupas tú ningún evento del "TreeView", quiero decir, ¿la imagen se cambia ella sola? ¿Cuando seleccionas un nodo o algo?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 22-07-2007
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Otro problema TreeView relacionado con imagenes

Cita:
Empezado por dec
Hola,

¿Y no ocupas tú ningún evento del "TreeView", quiero decir, ¿la imagen se cambia ella sola? ¿Cuando seleccionas un nodo o algo?
No, no estoy utilizando ningun evento del TreeView......de hecho desde anoche he estado buscandole....y ahora el problema ya no es ese, porque ya supe el porque me cambiaba las imagenes....no estaba utilizando la propiedad SelectIndex de la clase TTreeNode.

Ahora la bronca es otra, como le hago para q los nodos hijos tengan la misma imagen ?

Has de cuenta mi TreeView es como sigue:

+CLIENTE
····+NOTA1
····-SERVICIO 1
····Prenda 1
····Prenda 2
····Prenda 3
····+SERVICIO 2
····+NOTA2

Entonces necesito que los nodos NOTA1 y NOTA2 tengan la misma imagen y que los nodos SERVICIO 1 y SERVICIO 2 asi como los servicios q tenga el nodo de la NOTA2, tambien tengan la misma imagen.....en donde tambien una imagen para los nodos etiquetados en este ejemplo como "Prenda1, Prenda2, etc".


Mira este es el codigo....
Código Delphi [-]
procedure TfrmVerNotas.FormShow(Sender: TObject);
Var
   NodoNotas, NodoServicios,NodoPrendas,i,n,m,nNota, nNota2, nServicio, nServicio2:Integer;
   cCliente, cNotas,cServicio,cPrenda: TTreeNode;
   cNota, cServ, cPrendas:String;
begin
    i:=1;
    n:=2;
    m:=3;
    frmVerNotas.Caption:='Ver Notas';
    qryDatos.Close;
    qryDatos.ParamByName('CLIENTE').AsInteger:=frmGCliente.qryGCliente.fieldbyname('CLAVE_CLIENTE').AsIn  teger;
    qryDatos.Open;
    qryDatos.First;
    cCliente:=trvPrendas.Items.Add(nil,frmGCliente.qryGCliente.fieldbyname('NOMBRE_RAZON_SOCIAL').AsStri  ng);
//    trvPrendas.Items[0].ImageIndex:=0;
//    trvPrendas.Items[0].SelectedIndex:=0;
    While not (qryDatos.Eof) do
    begin
      nNota:=qryDatos.FieldValues['CONSEC_NOTA'];
      nNota2:=nNota;
      cNotas:=trvPrendas.Items.AddChild(cCliente,'Nota '+qryDatos.fieldbyname('CONSEC_NOTA').AsString+' Fecha Registro: '+qryDatos.fieldbyname('FECHA_REGISTRO').AsString);
//      trvPrendas.Items[i].ImageIndex:=1;
//      trvPrendas.Items[i].SelectedIndex:=1;
      While (nNota=nNota2) and not(qryDatos.Eof) do
      begin
           nServicio:=qryDatos.fieldbyname('clave_servicio').AsInteger;
           nServicio2:=nServicio;
           cServicio:=trvPrendas.Items.AddChild(cNotas,qryDatos.fieldbyname('SERVICIO').AsString);
//           trvPrendas.Items[2].ImageIndex:=2;
//           trvPrendas.Items[2].SelectedIndex:=2;
           While (nServicio=nServicio2) and not(qryDatos.Eof) do
           begin
               trvPrendas.Items.AddChild(cServicio,qryDatos.fieldbyname('PRENDA').AsString+'-'+qryDatos.fieldbyname('COLOR').AsString);
               qryDatos.Next;
               nServicio:=qryDatos.fieldbyname('CLAVE_SERVICIO').AsInteger;
{               if qryDatos.FieldByName('PRENDA_ENTREGADA').AsInteger=1 then
               begin
                 trvPrendas.Items[m].ImageIndex:=3;
                 trvPrendas.Items[m].SelectedIndex:=3;
               end Else Begin
                 trvPrendas.Items[m].ImageIndex:=4;
                 trvPrendas.Items[m].SelectedIndex:=4;
               end;
               inc(m);}
           end;
           nNota:=qryDatos.FieldValues['CONSEC_NOTA'];
//           inc(n);
      end;
//      inc(i);
    end;
end;

Hasta el momento esto me ha estado funcionando, pero solamente en NOTA1 del nodo padre, porq en el segundo (NOTA2) me pone la primer imagen q tiene ImagenList.

Si me puedes y tambien a todos los del foro, ayudar a resolverlo mucho se los agradecere....

Gracias de antemano por contestar.....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #4  
Antiguo 22-07-2007
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Oye DEC, en el codigo que puse tengo las lineas que ponen las imagenes como comentarios, ya lo habras visto, porque de momento los dejare asi, hasta que no encuentre la solucion optima.

Por otra parte quiesiera ser mas explicito con lo de las imagenes.....
en el nodo de CLIENTE tengo la imagen A
y dentro de CLIENTE tengo tantos nodos como notas haya tenido el cliente, en este caso tengo NOTA1 y NOTA2 con la imagen B.
Y dentro de NOTA1 y NOTA2 tengo tantos X servicios registrados, los cuales digamos q les toca la imagen C.

(Cometi un error de descripcion en el TreeView....puse los siguiente:
+CLIENTE
····+NOTA1
····-SERVICIO 1
····Prenda 1
····Prenda 2
····Prenda 3
····+SERVICIO 2
····+NOTA2

Lo cual las ultimas dos lineas debe quedas voltedas.....quedaria asi:
+CLIENTE
····+NOTA1
····-SERVICIO 1
····Prenda 1
····Prenda 2
····Prenda 3
····+NOTA2
····+SERVICIO 2

Y por ultimo una imagen especial que logre identificar a todas los nodos PRENDA1, PRENDA2, PRENDA3....PRENDASn, de cada nota (NOTA1, NOTA2...NOTAn)...
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 22-07-2007 a las 20:47:57.
Responder Con Cita
  #5  
Antiguo 23-07-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mRoman
...pero cada vez que selecciono un NODO me cambie de imagen....y no se porque.
Revisa la propiedad StateImages (también es de tipo ImageList); Posiblemente esté relacionada con que los nodos cambien de imagen (sin aparente razón) dependiendo de si están seleccionados o no (con el foco o no).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 26-07-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Por lo que puedo ver, lo que tu quieres es agregar una especie de iconos para distinguir los tipos de registros, pues bien, lo que primero debes hacer, es deterninar el tipo de registro que es, (cliente, nota, servicio) luego almacernar este tipo de servicio en una propiedad del TREENODE (FIJATE QUE ES TREENODE y no TREEEVIEW a lo que me refiero). Luego en el evento OnGetImageIndex del treeview escribes código para leer el tipo de registro y asignarle al treenode el imageIndex que necesites, así como también lo debes hacer con la propiedade SelectedImageIndex y si has asignado un stateImage al treeview también lo debes hacer con la propiedad StateImage del treenode.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 28-07-2007
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Imagenes TreeVIew

Cita:
Empezado por D&W
Por lo que puedo ver, lo que tu quieres es agregar una especie de iconos para distinguir los tipos de registros, pues bien, lo que primero debes hacer, es deterninar el tipo de registro que es, (cliente, nota, servicio) luego almacernar este tipo de servicio en una propiedad del TREENODE (FIJATE QUE ES TREENODE y no TREEEVIEW a lo que me refiero). Luego en el evento OnGetImageIndex del treeview escribes código para leer el tipo de registro y asignarle al treenode el imageIndex que necesites, así como también lo debes hacer con la propiedade SelectedImageIndex y si has asignado un stateImage al treeview también lo debes hacer con la propiedad StateImage del treenode.
Gracias...checare eso.. !
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #8  
Antiguo 27-05-2012
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Imagenes en los nodos

Hola cris:

Cita:
Por lo que puedo ver, lo que tu quieres es agregar una especie de iconos para distinguir los tipos de registros, pues bien, lo que primero debes hacer, es deterninar el tipo de registro que es, (cliente, nota, servicio) luego almacernar este tipo de servicio en una propiedad del TREENODE (FIJATE QUE ES TREENODE y no TREEEVIEW a lo que me refiero). Luego en el evento OnGetImageIndex del treeview escribes código para leer el tipo de registro y asignarle al treenode el imageIndex que necesites, así como también lo debes hacer con la propiedade SelectedImageIndex y si has asignado un stateImage al treeview también lo debes hacer con la propiedad StateImage del treenode.
me pasa lo mismo que mRoman, he intentado hacer lo que propones , pero no he tenido exito. Perdon pero me podrias ampliar la solucion ?

Gracias

Luis Roldan
Mar del Plata
Argentina
Responder Con Cita
  #9  
Antiguo 27-05-2012
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 Chaja.

Si el problema es el que menciona mRoman inicialmente:
Cita:
... entonces necesito saber como hacerle para que cuando yo seleccione un servicio no me cambie la imagen con otra q se encuentra dentro del ImageList
Basta con poner el mismo índice a las propiedades ImageIndex y SelectedIndex en cada Item .

Ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to TreeView1.Items.Count-1 do
  begin
    TreeView1.Items.Item[i].ImageIndex:= i;
    TreeView1.Items.Item[i].SelectedIndex:= i;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 27-05-2012
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
gracias.... caso solucionado.... lo que me falta aprender es como usar la priedad Data
si tenes un ejemplo practico estaria bueno, ahora si yo uso esta propiedad, se puede usar la forma tradicional tambien? es decir

Código Delphi [-]
 
Nodo1 := tvListado.Items.AddChild(tvListado.Items[N],
             CDSStockCODIGO_STK.AsString + '-' + CDSStockDETALLE_STK.Value);

lo que quiero es agrgar mas datos dentro de cada nodo..

sos una masa.... ( masa entiendase por un tipo con buena onda, dispuesto a yudar, o sinonimos a estos)

Luis Roldan
Mar del Plata
Argentina
Responder Con Cita
  #11  
Antiguo 28-05-2012
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 Luís.

Te pongo un ejemplo simple que utiliza la propiedad Data, espero que te sea útil...
Código Delphi [-]
type
  TMiClase = class(TObject)
    Texto: string;
    //...
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Nodo: TTreeNode;
  MiClase: TMiClase;
begin
  Nodo:= nil;
  MiClase:= TMiClase.Create;
  MiClase.Texto:= '¡Joya! justo sobre el nodo';
  TreeView1.Items.AddChildObject(Nodo, 'Hace click aquí', MiClase);

end;

procedure TForm1.TreeView1Click(Sender: TObject);
var
  Nodo: TTreeNode;
  P: TPoint;
begin
  P:= ScreenToclient(Mouse.CursorPos);
  Nodo:= TreeView1.GetNodeAt(P.X, P.Y);
  if Nodo <> nil then
    ShowMessage(TMiClase(Nodo.Data).Texto)
  else
   ShowMessage('¡ Pif ! );
end;

Cita:
sos una masa....
Muchas gracias

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 28-05-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
A mí no me gusta para nada hacer el moldeo de tipos (no hay más remedio, por eso uso siempre una función tonta):
Código Delphi [-]

function TMiClase.AsMiClase : TMiClase
begin
   Result := Self
end;

así se hace más clara la lectura del código:

Código Delphi [-]
ShowMessage(Nodo.Data.asMiClase.Texto)

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 28-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe Ver Mensaje
Código Delphi [-]
ShowMessage(Nodo.Data.asMiClase.Texto)
No entiendo. Esto no compilaría.

// Saludos
Responder Con Cita
  #14  
Antiguo 28-05-2012
[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...

Lo mismo pensé cuando leí el comentario.

Código Delphi [-]
TTreeNode.Data: Pointer;

Aparte que para usar algo como Objeto.AsMiClase.Metodo, este tendría que ser un método de clase.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #15  
Antiguo 01-06-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
pos sip, he metido la patita... y de qué modo... Perdón.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Imagenes mas grandes en un TreeView hmrvivas OOP 1 13-07-2007 06:02:43
TreeView cambio de imagenes Manuel Varios 2 25-09-2006 15:53:18
Imagenes en el TreeView Gustavo Gowdak OOP 2 13-12-2004 02:25:10
Como utilizar el Treeview, desplegar la info del arbol binario al treeview leo21 Varios 2 08-04-2004 22:47:30
Como utilizar el Treeview, desplegar la info del arbol binario al treeview leo21 OOP 1 08-04-2004 22:42:44


La franja horaria es GMT +2. Ahora son las 05:38:23.


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