Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: daviel en Junio 08, 2010, 03:10:54 pm

Título: Como trabajar con un ListView
Publicado por: daviel en Junio 08, 2010, 03:10:54 pm
Hola a todos, primero que nada me presento, quisas este lugar no sea el adecuado para hacerlo.

Bueno soy un lector de los post buestros, me encanto el telnet de coco...
Mi pregunta es la siguiente.
Tengo un listview al que le añado datos por codigo, y muchos de estos datos son añadidos desde una bd de forma dinamica.
Mi intencion es que una vez sean añadido los datos de forma dinamica el usuario pueda editar o añadir los datos que crea correspondiente en el mismo listview.
Para rellenar darle valores al listview lo hago al cargar el form llamo a esta funcion:
Código: [Seleccionar]
    Sub listview_añadirdatos()
        posturas.Columns.Add("Fecha", "Fecha")
        posturas.Columns.Add("Huevos", "Huevos")
        posturas.Columns.Add("Nacidos", "Nacidos")
        posturas.Columns.Add("Fecundados", "Fecundados")
        posturas.Columns.Add("Bajas", "Bajas")
        posturas.Columns.Add("Observaciones", "Observaciones")
        posturas.View = View.Details
    End Sub

Luego una vez ya ha cargado el form, realizo lo siguiente para rellenar los datos de forma dinamica
Código: [Seleccionar]
        num = postura.TraerRow(pareja.ID)
        Dim a As Integer = 0

        posturas.FullRowSelect = False
        posturas.LabelEdit = True
        Do While a < num
            postura.TraerPostura(pareja.ID, a)
            posturas.Items.Add(postura.FECHA)
            posturas.Items(a).BackColor = Drawing.Color.White
            posturas.Items(a).SubItems.Add(postura.HUEVOS)
            posturas.Items(a).SubItems.Add(postura.FECUNDADOS)
            posturas.Items(a).SubItems.Add(postura.NACIDOS)
            posturas.Items(a).SubItems.Add(postura.BAJAS)
            posturas.Items(a).SubItems.Add(postura.OBSERVACION)
            a = a + 1
        Loop

Aclaraciones: tengo la variable postura que hace referencia a una clase que me cree para llevar todo el tema de acceso a la bd, y posturas que es el nombre del listview.
Como ven tengo la propiedad LabelEdit a true, pero no sucede nada, es decir, no puedo editar ningun dato.

Podrian decirme como orientarme para que me funcione.


Saludos y gracias a todos
Título: Re:Como trabajar con un ListView
Publicado por: LeandroA en Junio 08, 2010, 07:31:57 pm
Eso no parece Visual Basic 6, es .Net ?
En fin, el LabelEdit se activa con un doble clic, tal como cuando queres cambiar el nombre de una carpeta o archivo. Es eso¿?

Saludos.
Título: Re:Como trabajar con un ListView
Publicado por: daviel en Junio 08, 2010, 07:56:59 pm
perdona por confundirme tienes razon es .net.

Bueno, cuando doy dobleclick sobre el control nopasa nada. solo se selecciona pero no se pone en modo edicion.
Lo que realize fue lo siguiente, generar el evento selectindexchange sobre el listview
Código: [Seleccionar]
    Private Sub posturas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles posturas.SelectedIndexChanged
        If posturas.SelectedItems.Count > 0 Then 'Si hay algún item seleccionado
            Dim vForm2 As New formulario
            vForm2.fecha.Text = posturas.FocusedItem.Text
            vForm2.nacidos.Text = posturas.FocusedItem.SubItems(1).Text
            vForm2.huevos.Text = posturas.FocusedItem.SubItems(2).Text
            vForm2.fecundados.Text = posturas.FocusedItem.SubItems(3).Text
            vForm2.bajas.Text = posturas.FocusedItem.SubItems(4).Text
            vForm2.observaciones.Text = posturas.FocusedItem.SubItems(5).Text
            vForm2.ShowDialog()
        End If
    End Sub

Preguntar si hay alguno seleccionado y enviarle el contenido del selecionado a un nuevo formulario .

En dicho formulario tengo los recivo con unos texbox, y tengo dos botones, uno para cancelar que seria me.close
y otro para validar las modificaciones y guardarlas en el listview que estamos editando:
Código: [Seleccionar]
Dim d As New ficha_aves
'la validacion no la pongo por que utilizo if para darle el foco al campo sin rellenar. solo pongo como le paso los datos al form principal
        Try
            d.posturas.FocusedItem.Text = fecha.Text
            d.posturas.FocusedItem.SubItems(1).Text = huevos.Text
            d.posturas.FocusedItem.SubItems(2).Text = nacidos.Text
            d.posturas.FocusedItem.SubItems(3).Text = fecundados.Text
            d.posturas.FocusedItem.SubItems(4).Text = bajas.Text
            d.posturas.FocusedItem.SubItems(5).Text = observaciones.Text
        Catch ex As EvaluateException
            MsgBox(ex.Message)
        End Try

Ahora para añadir un nuevo item al listview como podria hacerlo?

Lo acabo de solucionar añadiendo un btn que se llama añadir:
Código: [Seleccionar]
        Dim vForm2 As New formulario
        vForm2.fecha.Text = Date.Today
        vForm2.nacidos.Text = ""
        vForm2.huevos.Text = ""
        vForm2.fecundados.Text = ""
        vForm2.bajas.Text = ""
        vForm2.observaciones.Text = ""
        vForm2.ShowDialog()
Aqui le paso parametros vacios a los texbox del otro formulario, menos la fecha, ya que añado la fecha actual.

Ahora como los guardo en el listview?
Título: Re:Como trabajar con un ListView
Publicado por: LeandroA en Junio 08, 2010, 10:05:55 pm
en el formulario donde vas a editar los items declara una variable publica donde se va a almacenar el index del item luego cuando aceptas los cambios haces algo asi (no te doy exactamente como porque no se como hacerlo en .net y el nombre de tus forms)

elformulario.posturas.Items(index).text = lo que sea
elformulario.posturas.Items(index).SubItems(1).Text = lo que sea

no se si es esa tu duda?.

Saludos.

Título: Re:Como trabajar con un ListView
Publicado por: daviel en Junio 09, 2010, 08:05:11 am
gracias leandro cuando llegue a mi casa lo pruebo a ver que tal me va. si me funciona o no.

Título: Re:Como trabajar con un ListView
Publicado por: wolf_kof en Junio 09, 2010, 02:28:59 pm
Bueno en primer lugar de eso ya hay un ejemplo que lo proporociono nuestro amigo SSCCAANN con una base de datos SQL 2000 ahora en .net vere si puedo subir un ejemplo dentro de unos dias.... asi dije con el softmega y lo subi comoun mes despues asi que ten pasiencia.
Título: Re:Como trabajar con un ListView
Publicado por: daviel en Junio 09, 2010, 03:45:55 pm
Gracias a todos por las respuestas.

Bueno, no puedo guardar los datos obtenidos en el listview.
Intente como planteaste leandro pero no obtube nada.
Luego asocie una var al form principal y realize lo siguiente, y me lo admite:
Código: [Seleccionar]
        Dim d As New ficha_aves

        Try
            d.posturas.FocusedItem.Text = fecha.Text
            d.posturas.FocusedItem.SubItems(1).Text = huevos.Text
            d.posturas.FocusedItem.SubItems(2).Text = nacidos.Text
            d.posturas.FocusedItem.SubItems(3).Text = fecundados.Text
            d.posturas.FocusedItem.SubItems(4).Text = bajas.Text
            d.posturas.FocusedItem.SubItems(5).Text = observaciones.Text
            d.posturas.Refresh()
        Catch ex As EvaluateException
            MsgBox(ex.Message)
        End Try

Pero cuando lo intento de probar a ver si funciona, pues me muestra el siguente error:
Citar
Referencia a objeto no establecida como instancia de un objeto.
En la sugerencia me dice:
 
Citar
utilize la palabra new para crear una instancia de objeto
determine si el objeto es null antes de llamar al metodo
obtener ayuda general sobre esta excepcion
Título: Re:Como trabajar con un ListView
Publicado por: NolO en Junio 09, 2010, 04:07:58 pm
Revisa esto puede que te ayude en algo.

http://www.solovb.net/index.php/2009/02/19/modificar-datos-de-un-listview/ (http://www.solovb.net/index.php/2009/02/19/modificar-datos-de-un-listview/)

Saludos.
Título: Re:Como trabajar con un ListView
Publicado por: daviel en Junio 09, 2010, 05:02:29 pm
exelente Nolo  ;D

ya lo tengo solucionado. Gracias, exelente...

Para añadir, es decir, para no modificar los datos y añadir utilizando el mismo procedimiento, es igual con la diferencia que ya no estas utilizando el item selected . y que tienes que tener la posicion en que lo almacenas. Pongo este ejemplo
Código: [Seleccionar]
            Dim temporal As Integer = My.Forms.ficha_aves.posturas.Items.Count
            My.Forms.ficha_aves.posturas.Items.Add(fecha.Text)
            My.Forms.ficha_aves.posturas.Items(temporal).SubItems.Add(huevos.Text)


Gracias  a todos.. Exelente ya esa parte de mi code funciona.. Jejeje