TrreView

31/08/2004 - 09:39 por Xacvier | Informe spam
Necesito un TreeView identico al de VB en el cual pueda
tener un Texto visible para cada nodo y un código o
identificador que tambien pueda ser un string.

El TreeControl no me permite un identificador string

He intentado insertar el CTreeView, el CNodes y CNode y
utilizar:

Nodes.Add("Root", 4, "NodoA", "Hijo del Primer NODO,
NULL, NULL) y da un error de ejecución.

ALGUNA AYUDA POR FAVOR
GRACIAS

Preguntas similare

Leer las respuestas

#1 Ivan CP
31/08/2004 - 15:56 | Informe spam
Utiliza este codigo

// tc es el TreeControl que tienes en tu dialogo
// si no estas en un dialogo entonces utiliza esta llamada
// CTreeCtrl &tc = GetTreeCtrl(); en el CTreeView

HTREEITEM treeItem,tmpItem;
treeItem = tc.InsertItem("Documentos",0,0);

tmpItem = tc.InsertItem("Pendientes",2,2,treeItem);
tc.SetItemData(tmpItem,FOLDER_PENDIENTES);

tmpItem = tc.InsertItem("Recibidos",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_RECIBIDOS);

tmpItem = tc.InsertItem("Enviados",3,3,treeItem);
tc.SetItemData(tmpItem,FOLDER_ENVIADOS);

tmpItem = tc.InsertItem("Archivados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_ARCHIVADOS);

tmpItem = tc.InsertItem("Registrados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_REGISTRADOS);

tc.Expand(treeItem,TVE_EXPAND);

treeItem = tc.InsertItem("Mensajes locales",0,0);
tc.InsertItem("Recibidos",-1,-1,treeItem);
tc.InsertItem("Enviados",-1,-1,treeItem);
tc.InsertItem("Guardados",-1,-1,treeItem);
tc.InsertItem("Eliminados",-1,-1,treeItem);
tc.Expand(treeItem,TVE_EXPAND);
Respuesta Responder a este mensaje
#2 Xavier
31/08/2004 - 16:53 | Informe spam
Gracias, pero esto es lo que hago normalmente. En mi
caso, es necesario que el identificador del elemento o
nodo no sea un int sino un CString ya que los datos los
obtengo de un recordset.

El objetivo es al pulsar sobre un elemento, se debe abrir
la ficha de cliente. Al cliente se accede por código
alfanumerico, por tanto es que debo guardar. En el arbol
se muestra en nombre del cliente.

Mas ideas?

Gracias

Utiliza este codigo

// tc es el TreeControl que tienes en tu dialogo
// si no estas en un dialogo entonces utiliza esta


llamada
// CTreeCtrl &tc = GetTreeCtrl(); en el CTreeView

HTREEITEM treeItem,tmpItem;
treeItem = tc.InsertItem("Documentos",0,0);

tmpItem = tc.InsertItem("Pendientes",2,2,treeItem);
tc.SetItemData(tmpItem,FOLDER_PENDIENTES);

tmpItem = tc.InsertItem("Recibidos",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_RECIBIDOS);

tmpItem = tc.InsertItem("Enviados",3,3,treeItem);
tc.SetItemData(tmpItem,FOLDER_ENVIADOS);

tmpItem = tc.InsertItem("Archivados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_ARCHIVADOS);

tmpItem = tc.InsertItem("Registrados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_REGISTRADOS);

tc.Expand(treeItem,TVE_EXPAND);

treeItem = tc.InsertItem("Mensajes locales",0,0);
tc.InsertItem("Recibidos",-1,-1,treeItem);
tc.InsertItem("Enviados",-1,-1,treeItem);
tc.InsertItem("Guardados",-1,-1,treeItem);
tc.InsertItem("Eliminados",-1,-1,treeItem);
tc.Expand(treeItem,TVE_EXPAND);


.

Respuesta Responder a este mensaje
#3 Xavier
31/08/2004 - 17:15 | Informe spam
Gracias, pero esto es lo que hago normalmente. En mi
caso, es necesario que el identificador del elemento o
nodo no sea un int sino un CString ya que los datos los
obtengo de un recordset.

El objetivo es al pulsar sobre un elemento, se debe abrir
la ficha de cliente. Al cliente se accede por código
alfanumerico, por tanto es que debo guardar. En el arbol
se muestra en nombre del cliente.

Mas ideas?

Gracias


Utiliza este codigo

// tc es el TreeControl que tienes en tu dialogo
// si no estas en un dialogo entonces utiliza esta


llamada
// CTreeCtrl &tc = GetTreeCtrl(); en el CTreeView

HTREEITEM treeItem,tmpItem;
treeItem = tc.InsertItem("Documentos",0,0);

tmpItem = tc.InsertItem("Pendientes",2,2,treeItem);
tc.SetItemData(tmpItem,FOLDER_PENDIENTES);

tmpItem = tc.InsertItem("Recibidos",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_RECIBIDOS);

tmpItem = tc.InsertItem("Enviados",3,3,treeItem);
tc.SetItemData(tmpItem,FOLDER_ENVIADOS);

tmpItem = tc.InsertItem("Archivados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_ARCHIVADOS);

tmpItem = tc.InsertItem("Registrados",4,4,treeItem);
tc.SetItemData(tmpItem,FOLDER_REGISTRADOS);

tc.Expand(treeItem,TVE_EXPAND);

treeItem = tc.InsertItem("Mensajes locales",0,0);
tc.InsertItem("Recibidos",-1,-1,treeItem);
tc.InsertItem("Enviados",-1,-1,treeItem);
tc.InsertItem("Guardados",-1,-1,treeItem);
tc.InsertItem("Eliminados",-1,-1,treeItem);
tc.Expand(treeItem,TVE_EXPAND);


.

Respuesta Responder a este mensaje
#4 Ivan CP
31/08/2004 - 19:05 | Informe spam
En ese caso es mejor cambiar el tipo de dato fisico de la clave principal de
tu tabla en tu base de datos, ya que las cosas se complican mucho (tampoco
es recomendado generalmente) tener claves primarias de tipo char o varchar.
A menos que sea estrictamente necesario... como en el caso de codigos
alfanumericos etc..

Si no es posible hacer esto entonces tendrás que implementarte una clase
derivadad e CTreeCtrl que haga lo que necesites

Bueno tu eliges.


www.Latindevelopers.com
La comunidad de programadores latinos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida