border
VB 6
 
 
/

Retroceder   VB-MUNDO - Visual Basic, y mucho mas > Programacion > Visual Basic 6.00
Olvidó Password? Registrarse!
Registrarse FAQDonate Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

El Mejor Hosting .NET Framework 4.0

En VB-MUNDO usamos el increible servicio de SmarterASP

Respuesta
 
LinkBack (1) Herramientas
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Antiguo 26-09-2011, 13:40:27
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Agregar CheckBox a ListView dependiendo de datos

Hola a todos
Cargo un ListView con varios datos, y quisiera poder agregar un checkbox a cada Item si es que cumple con uno de los datos

Ej.
Id Documentacion
1 Si
2 Si
3 No
4 No
5 Si
6 No

Lo que necesito poer hacer es que si la documentacion esta en Si se agregue un checkbox, en caso contrario que no se agregue o bien se agregue pero que el estado este desabilitado

Alguna idea
Muchas Gracias
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 26-09-2011, 13:57:15
Avatar de Scherzo
Gran Participación en el Foro
 
Registrado: may 2006
Posts: 473
Créditos: 2.900
Scherzo Valoración +2
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Buenas, entre las propiedades de las ListViews tienes una que se llama "Checkboxes" que por defecto está a False. Ponla a True y mira a ver si es lo que necesitas.

Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 26-09-2011, 14:10:20
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Si conozco esa funcion, pero lo que me hace eso es agregar un checkbox a todos, y yo necesito agregar un checkbox solo si se cumple la regla que Documentacion este en SI
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 26-09-2011, 14:32:55
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Asi es como se tendria que ver

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 26-09-2011, 14:34:39
Avatar de Scherzo
Gran Participación en el Foro
 
Registrado: may 2006
Posts: 473
Créditos: 2.900
Scherzo Valoración +2
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

¿Cuando dices que necesitas que se agregue un checkbox te refieres a que sea un control pulsable (que el usuario pueda marcarlo y desmarcarlo) o simplemente a que le aparezca una marca estática que indique que la documentación está, pero que no sea manipulable de forma directa por el usuario?

Si es este último caso, te recomiendo que lo hagas mediante iconos asociados al ListItem. En una ImageList que insertes en el formulario añades los iconos que quieras usar, por ejemplo en este caso uno con forma de "check", y luego pulsando con el botón derecho sobre la ListView, vas a Propiedades y pulsas sobre la pestaña ImageList. Ahí en Small indicas que quieres usar el ImageList que has creado.

De esa forma vinculas el ImageList con la ListView. Luego para asignar el icono que quieras simplemente en la propiedad SmallIcon del ListItem indicas el nombre que hayas dado a la imagen dentro del ImageList, así puedes poner una marca a aquellos registros que tengan toda la documentación.

En pseudocódigo, tras haber creado el ImageList con un icono llamado "IconoCheckOK":

Código:
    Dim oItem As ListItem
    
    Set oItem = oLista.ListItems.Add(...)
    If TieneDocumentacionOK(oItem) then
        oItem.SmallIcon = "IconoCheckOK"
    End If
Espero haberme sabido explicar.

Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 26-09-2011, 14:37:39
Avatar de Scherzo
Gran Participación en el Foro
 
Registrado: may 2006
Posts: 473
Créditos: 2.900
Scherzo Valoración +2
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Perdona, he visto tu último mensaje con la captura de pantalla después de haberte escrito mi mensaje anterior.

No sé si hay forma de añadir de forma selectiva los checkboxes a los ListItems, pero a falta de eso, quizá puedas simularlo mediante tres imágenes en un ImageList, una vacía (un cuadro blanco), otra con un CheckBox sin marcar, y la tercera con el CheckBox marcado. Cuando el usuario pulse sobre el elemento, si éste dispone de checkbox (mirarías su icono actual), alternas su imagen (marcado -> desmarcado, y viceversa), o si no dispone de él (imagen en blanco), entonces simplemente no haces nada.

No sé, es un poco ñapa, pero quizá es una opción en espera de una más elegante.

Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 26-09-2011, 17:57:23
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Esa seria una manera, tendrias algun ejemplo de como poder hacerlo

muchas gracias
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #8 (permalink)  
Antiguo 26-09-2011, 18:21:14
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Este es mi codigo
Código:
Dim Item As ListItem

Private Sub Form_Load()
    Call IniciarConexion
    rs.Open "select * from contratos", cnn, adOpenStatic, adLockOptimistic
    Call CargarListView_Prestaciones(LV_Prestaciones, rs)
End Sub

Public Sub CargarListView_Prestaciones(LV_Prestaciones As ListView, rs As ADODB.Recordset)
    On Error GoTo ErrorSub
    LV_Prestaciones.ListItems.Clear
    If rs.RecordCount > 0 Then
        While Not rs.EOF
            Set ObjItem = LV_Prestaciones.ListItems.Add(, , rs(0))
           If Abs(rs!documentacion) = 1 Then
              ObjItem.SubItems(1) = "Si"
            Else
              ObjItem.SubItems(1) = vbNullString
            End If
            ObjItem.SubItems(2) = rs!fecha_carga
          rs.MoveNext
        Wend
    End If
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #9 (permalink)  
Antiguo 27-09-2011, 06:41:00
Avatar de Scherzo
Gran Participación en el Foro
 
Registrado: may 2006
Posts: 473
Créditos: 2.900
Scherzo Valoración +2
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Si asumimos que ya tienes creado el ImageList, y asociado a la ListView, con tres imágenes llamadas:

* "CheckBoxSinMarcar" - Para cuando el checkbox está presente y marcado
* "CheckBoxMarcado" - Para cuando el checkbox está presente, pero sin marcar
* "Vacio" - Para cuando no hay checkbox

Una forma de hacerlo podría ser, donde tienes lo siguiente:

Código:
If Abs(rs!documentacion) = 1 Then
    ObjItem.SubItems(1) = "Si"
Else
    ObjItem.SubItems(1) = vbNullString
End If
Poner:

Código:
If Abs(rs!documentacion) = 1 Then
    ObjItem.SubItems(1) = "Si"
    ObjItem.SmallIcon = "CheckBoxSinMarcar"
Else
    ObjItem.SubItems(1) = vbNullString
    ObjItem.SmallIcon = "Vacio"
End If
De esa forma, durante el rellenado de la lista, vas diferenciando entre aquellos que no van a tener CheckBox (irán con la imagen "Vacio") y los que sí lo tendrán (irán inicialmente con el CheckBox desmarcado, con la imagen "CheckBoxSinMarcar").

Después, para simular la pulsación del checkbox, una forma rápida sería controlar en el evento Click del ListView algo así como:

Código:
Dim oItem as ListItem

Set oItem = LV_Prestaciones.SelectedItem

If oItem.SmallIcon = "CheckBoxSinMarcar" Then
    oItem.SmallIcon = "CheckBoxMarcado"
ElseIf oItem.SmallIcon = "CheckBoxMarcado" Then
    oItem.SmallIcon = "CheckBoxSinMarcar"
End If
De esa forma, cuando pulse sobre un elemento de la ListView, este código mirará a ver qué icono tiene asignado en ese momento. Si es "Vacio", no hará nada. Si es "CheckBoxSinMarcar" lo cambiará por "CheckBoxMarcado", simulando así su pulsación. Si fuera "CheckBoxMarcado", entonces hace lo contrario, lo pasa a "CheckBoxSinMarcar", sumulando su desmarcación.

El problema de este método, es que basta con que pulse sobre el elemento, en cualquier parte del mismo, para que su estado cambie, lo cual puede no ser lo adecuado si necesitas seleccionar elementos para otro tipo de operaciones. Pero es un ejemplo rápido de cómo lo podrías implementar.

Lo ideal sería que capturaras la zona de pulsación del ratón, para que sólo se ejecute este código si se ha hecho sobre la zona de los iconos. En VB.NET se haría algo así:

Código:
Dim oPuntoDobleClick As Drawing.Point
Dim oRegistro As ListViewItem

'Obtenemos el punto sobre el que se ha hecho el doble click
oPuntoDobleClick = LV_Prestaciones.PointToClient(Cursor.Position)

'Nos aseguramos de haber obtenido el objeto correspondiente
If Not IsNothing(oPuntoDobleClick) Then
    'Obtenemos el ListViewItem que está en las coordenadas del punto obtenido
    oRegistro = LV_Prestaciones.GetItemAt(oPuntoDobleClick.X, oPuntoDobleClick.Y)
End If
De esta forma tenemos tanto el ListItem pulsado como las coordenadas a nivel de cliente (es decir, coordenadas dentro del ListView), por lo que si sabemos que la zona del CheckBox ocupa 16 pixels, pues si la X está entre 1 y 16, pues es que pulsados en esa zona (ejecutaríamos entonces el código de cambio de imagen), si es mayor que 16, entonces no hacemos nada con el CheckBox.

En VB6 supongo que será una idea similar, pero no te sé decir concretamente cómo se haría, lo mismo alguien que ya lo haya hecho nos puede echar una mano (o si buscas por Google seguro que aparece algún ejemplo de cómo hacerlo, intuyo que posiblemente tirando de funciones de la API de Windows).

Espero haberte aclarado algo y no haberte liado más...

Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #10 (permalink)  
Antiguo 27-09-2011, 07:11:20
Gran Participación en el Foro
 
Registrado: ago 2011
Posts: 458
Créditos: 16.602
davchi Aun no valorado
Predeterminado Re: Agregar CheckBox a ListView dependiendo de datos

Es muy buena opcion, pero aqui otra supuesta opcion.
Podria ser que la imagen de ObjItem.SmallIcon = "Vacio" la pudiera superponer al checkbox

ya que por ahora no usare un checkall o tildar todos o cheak todos,

pero como tendria que hacer para superponer la imagen de "vacio" sobre el checkbox.

es lo que se me ocurrio, no se si se podra

igualmente muchas gracias por la respuesta
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

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
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado

LinkBacks (?)
LinkBack to this Thread: http://www.foro.vb-mundo.com/f24/agregar-checkbox-a-listview-dependiendo-de-datos-21049/
Escrito Por For Type Fecha
Visual Basic 6.00 - VB-MUNDO - Programacion Visual This thread Refback 26-09-2011 14:24:20


La franja horaria es GMT. Ahora son las 14:50:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios


right
Inactive Reminders By Icora Web Design