• Miércoles 24 de Abril de 2024, 10:20

Autor Tema:  Componente Treeview  (Leído 1414 veces)

jander.atlas

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Componente Treeview
« en: Viernes 17 de Marzo de 2006, 11:01 »
0
Hola. Necesito que en mi componente treeview para cada hijo de cada nodo me aparezca un checbox o similar al lado para poder seleccionarlo y no tengo ni idea de como hacerlo.
Si a alguien no sabe como hacer esto pero tiene alguna idea mediante otra alternativa tambien me vale, lo unico ke necesito poder representar los datos con nodos e hijos de los nodos , y que estos nodos se puedan expandir y contraer.
Gracias por todo y espero vuestra respuesta.

jander.atlas

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Componente Treeview
« Respuesta #1 en: Miércoles 12 de Abril de 2006, 12:54 »
0
Hola gente.Despues de darle vueltas al final ya se com se hace por si a alguien le interesa.

En un TreeView no se pueden añadir checbox ni radiobuttoms pero lo que si te permite es a cada nodo o a cada hijo asignarle un imagen.Aprovecharemos entonces a poner a cada hijo(en mi caso) una imagen inicial de un checkbox desmarcado.
Para ello colocaremos un imagelist en donde tendremos las imagenes de los checbox marcados y desmarcados.Asi en el editor del treeview( o en tiempo de ejecucion) elegiremos el indice (ImageIndex) del checbox desmarcado.
Finalmente lo que nos queda es que cada vez que pinchemos en un nodo que sea hijo, si está con la imagen de desmarcado cambiaremos su imagen por la de marcado y viceversa.Eso se hace en el evento OnMouseDown y de la siguiente manera:

void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
//Declaramos un puntero de nodos
TTreeNode * TreeNode;

//Obtenemos el nodo que estamos pinchando
TreeNode = TreeView1->GetNodeAt(X, Y);

//Si estamos pinchando en algun nodo
if (TreeNode != NULL)
{
  //Si el nodo no tiene hijos es un hijo (esto para mi programa es asi)
  if (!TreeNode->HasChildren)
  {
  //Cambiamos las imagenes dependiendo de cual este activa
    switch (TreeNode->ImageIndex)
    {
      case 1:
        TreeNode->ImageIndex=2;
        TreeNode->SelectedIndex =2;
        break;
      case 2:
        TreeNode->ImageIndex=1;
        TreeNode->SelectedIndex =1;
        break;
    }
  }
}


}


Pues ahi lo de jo por si a alguien le interesa por ke a mi me amargo un poco y la verdad es ke al final es bastante fácil.Ciaooooooooo