Cita:
Iniciado por erbuson 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 originalPrivate Sub cmd_agre_Click()
Static Fila As Single
Fila = Fila + 1
AddGrid grd, Fila, 0, Text1
AddGrid grd, Fila, 1, Text2
AddGrid grd, Fila, 2, Text3
AddGrid grd, Fila, 3, Text4
AddGrid grd, Fila, 4, Text5
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