Insertar un checkbox en un ListCtrol.

19/09/2003 - 09:53 por __Juanjo__ | Informe spam
Hola grupo

Tengo un pequeño problema con un ListCtrol.

Quiero insertar un checkbox, para eso en la funcion InitialUpdate de la
clase he
añadido el siguiente codigo:
void ClistcheckView::OnInitialUpdate()
{
LVITEM item;
char cad[50];
int i;

CFormView::OnInitialUpdate();
ResizeParentToFit();

/*ELIMINA LAS ANTIGUAS COLUMNAS*/
for (i=0;i<3;i++)
m_Lista.DeleteColumn(0);

/*LE PONGO ESTILO AL CONTROL*/
m_Lista.SetExtendedStyle(LVS_EX_FULLROWSELECT |
LVS_EX_ONECLICKACTIVATE |
LVS_EX_GRIDLINES |
LVS_EX_INFOTIP|LVS_EX_CHECKBOXES);

/*CREO LAS COLUMNAS*/
m_Lista.InsertColumn( 0, "Código", LVCFMT_LEFT, 45);
m_Lista.InsertColumn( 1, "Nombre", LVCFMT_LEFT, 150);
m_Lista.InsertColumn( 2, "Check", LVCFMT_LEFT, 70);

/*AÑADO UN DATO DE PRUEBA*/
item.iItem= 0;
item.iSubItem= 0; //PRIMERA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"%d",1);
item.pszText=cad;
m_Lista.InsertItem( &item);

item.iSubItem= 1; //SEGUNDA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"Juanjo");
item.pszText=cad;
m_Lista.SetItem( &item);

item.iSubItem= 2; //TERCERA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"check");
item.pszText=cad;
m_Lista.SetItem( &item);
}


El resultado es bueno, pero no el esperado. Resulta que me crea un
ListCtrl y en la
primera columna me pone el check y al lado del check un "1".

La pregunta es, ¿alguien sabe como indicarle al control que columna o
columnas son
las que tienen que tener el check? ¿o alguien sabe de alguna web donde lo
digan?

Muchas gracias

Un cordial saludo.
 

Leer las respuestas

#1 Ignacio Nicolás Rodríguez
22/09/2003 - 14:17 | Informe spam
El checkbox refiere a la línea completa, por tanto aparecerá únicamente al
principio de la línea.
Fíjate por ejemplo que para obtener o modificar el estado, usas sólo el
número de ítem y nunca el subítem.

Saludos.

Ignacio Nicolás Rodríguez, MCSD.Net/MCT.--

"__Juanjo__" escribió en el mensaje
news:%23R0$
Hola grupo

Tengo un pequeño problema con un ListCtrol.

Quiero insertar un checkbox, para eso en la funcion InitialUpdate de


la
clase he
añadido el siguiente codigo:
void ClistcheckView::OnInitialUpdate()
{
LVITEM item;
char cad[50];
int i;

CFormView::OnInitialUpdate();
ResizeParentToFit();

/*ELIMINA LAS ANTIGUAS COLUMNAS*/
for (i=0;i<3;i++)
m_Lista.DeleteColumn(0);

/*LE PONGO ESTILO AL CONTROL*/
m_Lista.SetExtendedStyle(LVS_EX_FULLROWSELECT |
LVS_EX_ONECLICKACTIVATE |
LVS_EX_GRIDLINES |
LVS_EX_INFOTIP|LVS_EX_CHECKBOXES);

/*CREO LAS COLUMNAS*/
m_Lista.InsertColumn( 0, "Código", LVCFMT_LEFT, 45);
m_Lista.InsertColumn( 1, "Nombre", LVCFMT_LEFT, 150);
m_Lista.InsertColumn( 2, "Check", LVCFMT_LEFT, 70);

/*AÑADO UN DATO DE PRUEBA*/
item.iItem= 0;
item.iSubItem= 0; //PRIMERA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"%d",1);
item.pszText=cad;
m_Lista.InsertItem( &item);

item.iSubItem= 1; //SEGUNDA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"Juanjo");
item.pszText=cad;
m_Lista.SetItem( &item);

item.iSubItem= 2; //TERCERA COLUMNA
item.mask= LVIF_TEXT;
sprintf(cad,"check");
item.pszText=cad;
m_Lista.SetItem( &item);
}


El resultado es bueno, pero no el esperado. Resulta que me crea un
ListCtrl y en la
primera columna me pone el check y al lado del check un "1".

La pregunta es, ¿alguien sabe como indicarle al control que columna o
columnas son
las que tienen que tener el check? ¿o alguien sabe de alguna web donde lo
digan?

Muchas gracias

Un cordial saludo.




Preguntas similares