Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

como llenar una msflexgrid por medio de textbox

Estas en el tema de como llenar una msflexgrid por medio de textbox en el foro de Visual Basic clásico en Foros del Web. Tengo un consulta; Tengo una grilla llamada grd la cual contiene 5 columnas (Codigo, Descripcion, Cantidad, Precio y Total) Se supone que esta grilla debo ...
  #1 (permalink)  
Antiguo 20/10/2010, 19:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Exclamación como llenar una msflexgrid por medio de textbox

Tengo un consulta;
Tengo una grilla llamada grd la cual contiene 5 columnas (Codigo, Descripcion, Cantidad, Precio y Total)

Se supone que esta grilla debo llenarla a travez de 5 textbox
Bueno el procedimiento de llenado es el siguiente;

Private Sub cmd_agre_Click() 'este es un comando que agrega los datos a la grilla

grd.Row = 0
grd.AddItem Text1 & Chr(9) & Text2 & Chr(9) & Text3 & Chr(9) _
& Text4 & Chr(9) & Text5

End Sub


El problema es que al llena la grilla comienza desde la fila 3 y no desde la fila 1, aun siendo que declaro la grd.row=0

Alguien me puede decir si estoy haciendo algo mal??
Gracias por su ayuda!!
  #2 (permalink)  
Antiguo 21/10/2010, 03:47
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: como llenar una msflexgrid por medio de textbox

Hola, nunca había utilizado la función AddItem con el MsFlexgrid, pero está claro que funciona, lo unico que pasa es que la misma palabra lo dice: Add (Añadir)

El problema que tienes es que según como tengas definido el grid en diseño tendrá mas o menos filas y te añade al final, por tanto la opción AddItem no es nada práctica.

Si quieres puedes utilizar una esta rutina:

Código vb:
Ver original
  1. Private Sub AddGrid(Grid As MSFlexGrid, Fila As Single, Columna As Single, Texto As String)
  2.   ' Comprobamos si la fila existe, si no la añadimos.
  3.  If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1
  4.   ' Comprobamos si la columna existe, si no la añadimos.
  5.  If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
  6.   ' Pasamos el dato al Grid
  7.  Grid.TextMatrix(Fila, Columna) = Texto
  8. End Sub

La llamada a la misma es muy simple, te pongo un ejemplo

AddGrid grd, 5, 0, Text1
AddGrid grd, 5, 1, Text2
AddGrid grd, 5, 2, Text3
AddGrid grd, 5, 3, Text3

Cualquier duda comenta y lo aclaramos

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 21/10/2010, 20:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: como llenar una msflexgrid por medio de textbox

Cita:
Iniciado por erbuson Ver Mensaje
Hola, nunca había utilizado la función AddItem con el MsFlexgrid, pero está claro que funciona, lo unico que pasa es que la misma palabra lo dice: Add (Añadir)

El problema que tienes es que según como tengas definido el grid en diseño tendrá mas o menos filas y te añade al final, por tanto la opción AddItem no es nada práctica.

Si quieres puedes utilizar una esta rutina:

Código vb:
Ver original
  1. Private Sub AddGrid(Grid As MSFlexGrid, Fila As Single, Columna As Single, Texto As String)
  2.   ' Comprobamos si la fila existe, si no la añadimos.
  3.  If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1
  4.   ' Comprobamos si la columna existe, si no la añadimos.
  5.  If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
  6.   ' Pasamos el dato al Grid
  7.  Grid.TextMatrix(Fila, Columna) = Texto
  8. End Sub

La llamada a la misma es muy simple, te pongo un ejemplo

AddGrid grd, 5, 0, Text1
AddGrid grd, 5, 1, Text2
AddGrid grd, 5, 2, Text3
AddGrid grd, 5, 3, Text3

Cualquier duda comenta y lo aclaramos

Saludos

Gracias por responderme. Hice lo que me dijiste pero encontre 1 detalles que paso a describir;

1° Es que al agregar otro dato a la grilla, esta sobreescribe en la fila en donde agregue el primer dato.

Este es el codigo:

Private Sub cmd_agre_Click()


AddGrid grd, 1, 0, Text1
AddGrid grd, 1, 1, Text2
AddGrid grd, 1, 2, Text3
AddGrid grd, 1, 3, Text4
AddGrid grd, 1, 4, Text5

end sub

Private Sub AddGrid(Grid As MSFlexGrid, Fila As Single, Columna As Single, Texto As String)

'Comprobamos si la fila existe, si no la añadimos.
If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1

' Comprobamos si la columna existe, si no la añadimos.
If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
' Pasamos el dato al Grid

Grid.TextMatrix(Fila, Columna) = Texto

end sub
  #4 (permalink)  
Antiguo 22/10/2010, 00:28
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: como llenar una msflexgrid por medio de textbox

Hola:

El error este es lógico que se te produzca ya que si analizas la rutina verás que:

AddGrid grd, 1, 0, Text1
AddGrid grd, 1, 1, Text2
AddGrid grd, 1, 2, Text3
AddGrid grd, 1, 3, Text4
AddGrid grd, 1, 4, Text5

Estas instrucciones SIEMPRE envian el dato a la fila 1 ya que tu le debes indicar en que fila debe añadir el dato por tanto necesitas un contador para saber en que fila debe ponerlos.

Supongo que después harás algo con los datos, guardarlos en un archivo, volverlos a cargar posteriormente desde un archivo, etc., de ahí que la utilidad de la rutina es precisamente porque el programador determina donde deben ir los datos y no el programa.

Podrías utilizar la propiedad grd.Rows para saber cual es la última pero tendrás el mismo problema que tenías con el AddItem

AddGrid grd, grd.Rows, 0, Text1

Posibilidades hay muchas, se podría incluso modificar la función de tal manera que al enviarle por ejemplo Fila = -1, la misma averiguara cual es la Fila que debe ocupar, basándose en alguna comparacion de datos en Blanco, suponiendo ello que el programa tiene una verificación por ejemplo que no permita introducir el código en blanco.

En este caso concreto, la solucion es muy facil, pero piensa en todo lo que te he comentado anteriormente:

Código vb:
Ver original
  1. Private Sub cmd_agre_Click()
  2.   Static Fila As Single
  3.   Fila = Fila + 1
  4.   AddGrid grd, Fila, 0, Text1
  5.   AddGrid grd, Fila, 1, Text2
  6.   AddGrid grd, Fila, 2, Text3
  7.   AddGrid grd, Fila, 3, Text4
  8.   AddGrid grd, Fila, 4, Text5
  9. End Sub


Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 24/10/2010, 10:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
De acuerdo Respuesta: como llenar una msflexgrid por medio de textbox

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

El error este es lógico que se te produzca ya que si analizas la rutina verás que:

AddGrid grd, 1, 0, Text1
AddGrid grd, 1, 1, Text2
AddGrid grd, 1, 2, Text3
AddGrid grd, 1, 3, Text4
AddGrid grd, 1, 4, Text5

Estas instrucciones SIEMPRE envian el dato a la fila 1 ya que tu le debes indicar en que fila debe añadir el dato por tanto necesitas un contador para saber en que fila debe ponerlos.

Supongo que después harás algo con los datos, guardarlos en un archivo, volverlos a cargar posteriormente desde un archivo, etc., de ahí que la utilidad de la rutina es precisamente porque el programador determina donde deben ir los datos y no el programa.

Podrías utilizar la propiedad grd.Rows para saber cual es la última pero tendrás el mismo problema que tenías con el AddItem

AddGrid grd, grd.Rows, 0, Text1

Posibilidades hay muchas, se podría incluso modificar la función de tal manera que al enviarle por ejemplo Fila = -1, la misma averiguara cual es la Fila que debe ocupar, basándose en alguna comparacion de datos en Blanco, suponiendo ello que el programa tiene una verificación por ejemplo que no permita introducir el código en blanco.

En este caso concreto, la solucion es muy facil, pero piensa en todo lo que te he comentado anteriormente:

Código vb:
Ver original
  1. Private Sub cmd_agre_Click()
  2.   Static Fila As Single
  3.   Fila = Fila + 1
  4.   AddGrid grd, Fila, 0, Text1
  5.   AddGrid grd, Fila, 1, Text2
  6.   AddGrid grd, Fila, 2, Text3
  7.   AddGrid grd, Fila, 3, Text4
  8.   AddGrid grd, Fila, 4, Text5
  9. End Sub


Saludos
Muchas gracias, has sido muy amable.
Anteriormente habia provado varias variantes con el codigo que me entregaste y otro que diseñe, pero el resultado era siempre el mismo. Por alguna razón el puntero de la grilla se posesiona en la fila 1 cuando deberia ser la fila 0.
El problema es que rescato datos desde una grilla ubicada en form1, luego los paso a un form2, de detalle y luego agrego esos detalles a otro form3. por ende cada vez que pasaba por el form load q volvia a poner los datos siempre en la primera fila....
Pero gracias a tu ayuda ya pude solucionarlo, muchas gracias

Private Sub cmd_agre_Click()

Static f As Single
f = f + 1
txt_sub = Val(txt_can * txt_pre)
AddGrid Form2.grd, f, 0, txt_cod
AddGrid Form2.grd, f, 1, txt_desc
AddGrid Form2.grd, f, 2, txt_can
AddGrid Form2.grd, f, 3, txt_pre
AddGrid Form2.grd, f, 4, txt_sub
Form3.Hide
Form2.Show
end sub

Private Sub AddGrid(Grid As MSFlexGrid, fila As Single, columna As Single, Texto As String)

If Grid.Rows - 1 < fila Then Grid.Rows = fila + 1
If Grid.Cols - 1 < columna Then Grid.Cols = columna + 1
Grid.TextMatrix(fila, columna) = Texto


End Sub
  #6 (permalink)  
Antiguo 24/10/2010, 11:08
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: como llenar una msflexgrid por medio de textbox

De nada, ya sabes, cuando necesites una mano, por aqui andaremos.
Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...

Etiquetas: llenar, medio, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.