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

Tabla editable

Estas en el tema de Tabla editable en el foro de Visual Basic clásico en Foros del Web. Hola a todos: En un formulario de mi aplicacion, necesito que el usuario inserte unos datos en una tabla. Lo que quiero es establecer anteriormente ...
  #1 (permalink)  
Antiguo 28/05/2008, 01:02
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
Tabla editable

Hola a todos:

En un formulario de mi aplicacion, necesito que el usuario inserte unos datos en una tabla. Lo que quiero es establecer anteriormente el numero de filas y columnas, encabezados de columnas y la altura y el ancho de estas para que el usuario solo tenga que insertar cada dato en su lugar correspondiente.

E probado con el DataGrid y el MSFlexGrid, y es mas o menos lo que quiero, pero me falta lo mas importante, que el usuario pueda insertar datos en tiempo de ejecucion. Solo quiero eso, no necesito conectarme con ninguna BdD.

Alguien sabe con que propiedad puedo conseguirlo?Sino, algun otro control que se adapte mejor a lo que quiero??

Gracias de antemano

Agur.
  #2 (permalink)  
Antiguo 28/05/2008, 02:48
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Tabla editable

Hola,

el control DataGrid, al ser un control enlazado a datos, no sirve para lo que quieres. Sin embargo sí lo puedes hacer con el control MSFlexGrid, jugando con las propiedades de sus filas y columnas y con los eventos KeyPress y KeyDown.

Agur
  #3 (permalink)  
Antiguo 28/05/2008, 04:27
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Tabla editable

Gracias por tu interes, Avellaneda.

E conseguido que las celdas sean editables con el evento KeyPress, pero tengo un problema:

Cuando el texto de una celda es demasiado grande, no se visualiza todo. En la ayuda pone lo siguiente:

"Si el texto de una celda es demasiado largo para que se pueda mostrar en la celda y la propiedad WordWrap está establecida a True, el texto se ajusta a la línea siguiente dentro de la misma celda. Para mostrar el texto ajustado, es posible que sea necesario aumentar el ancho de columna de la celda (propiedad ColWidth) o el alto de la fila (propiedad RowHeight)."

Sin embargo, cuando pongo la propiedad WordWrap=True, no pasa a la siguiente linea. Además, quiero pasar el contenido de la tabla a una plantilla de Excel, y como esta no puede modificarse, necesito limitar el contenido de las celdas, para que el usuario no pueda escribir todo lo que quiera.

Alguna idea de como hacerlo?¿
  #4 (permalink)  
Antiguo 28/05/2008, 04:53
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Tabla editable

Hola etxebe,

para limitar el número de caracteres a escribir en cada columna, puedes hacer algo como esto:

Código:
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Dim i As Integer
i = Len(MSFlexGrid1.Text)
Select Case MSFlexGrid1.col
Case 0
    If i >= 10 Then KeyAscii = 0    ' la primera columna sólo admite 10 caracteres
Case 1
    If i >= 5 Then KeyAscii = 0     ' la segunda, cinco
End Select
If KeyAscii > 31 Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Sub
Agur
  #5 (permalink)  
Antiguo 28/05/2008, 07:17
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Tabla editable

Muchas gracias, es lo que queria.

Pero me faltaria un detalle. Es que en tu ejemplo limitas el texto a 10 y 5 caracteres y en mi aplicacion tengo que dejar que el usuario escriba algo mas, por lo que me falta espacio en el formulario...

Lo de WordWrap se puede hacer??Es que asi podria hacer las filas mas anchas y asi seria perfecto, porque me permitiria ahorrar mucho espacio.
  #6 (permalink)  
Antiguo 28/05/2008, 10:37
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Tabla editable

Bueno, el límite de 10 y 5 caracteres es un ejemplo. Puedes poner la limitación a cada columna el número de caracteres que necesites sólo con cambiar esos valores.

En cuanto a la propiedad WordWrap en True no hace las filas mas anchas sino que pasa a un segundo renglón si llega al límite del ancho y esto siempre y cuando la propiedad RowHeightMin permita una segunda fila en la celda.

Calcula el número de caracteres máximos de cada columna de la planilla Excel y eso es lo que aplicas en las propiedades del MSFlexGrid.

  #7 (permalink)  
Antiguo 28/05/2008, 12:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Tabla editable

En las FAQ's también hay un ejemplo de un Grid editable bastante interesante.

Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 29/05/2008, 03:17
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Tabla editable

Gracias por vuestro tiempo.
E mirado un poco las FAQ's pero me parece que el ejemplo es demasiado complicado (soy novato)...
Ademas, en mi aplicacion no necesito gran cosa y si pudiera conseguir lo de WordWrap seria mas que suficiente ya que cumpliria el objetivo de la aplicacion con un codigo muy simple:

Private Sub Form_Load()
MSFlexGrid1.Cols = 7
MSFlexGrid1.Rows = 7
For i = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.ColWidth(i) = 900
Next
MSFlexGrid1.WordWrap = True
MSFlexGrid1.RowHeightMin = 900
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Dim i As Integer
i = Len(MSFlexGrid1.Text)
If KeyAscii = 8 Then
If i > 0 Then
MSFlexGrid1.Text = VBA.Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
ElseIf i >= 40 Then
KeyAscii = 0
ElseIf KeyAscii > 31 Then
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End If
End Sub

Como veis, el codigo es muy simple (lo mejor, ya que cumple su funcion y deben entenderlo otras personas).

Sin embargo, lo de WordWrap no lo consigo. E puesto como limite 40 caracteres y e definido el ancho de las columnas (no tengo sitio para hacerlas mas anchas). No se si e entendido bien lo de:

"...y esto siempre y cuando la propiedad RowHeightMin permita una segunda fila en la celda."

Porque yo creo que hay suficiente sitio...pero no pasa al siguiente renglon cuando se llega al limite del ancho. No entiendo nada. Sabriais decirme porque?
  #9 (permalink)  
Antiguo 29/05/2008, 04:36
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Tabla editable

Hola etxebe,

con la propiedad WordWrap a True sí que pasa al siguiente renglón, pero lo que no hace es truncar palabras.
Si una única palabra ocupa el ancho de la celda, seguirá escribiendo en el mismo renglón hasta que termine la palabra (es decir, hasta que se pulse espacio).


agur
  #10 (permalink)  
Antiguo 29/05/2008, 05:37
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Tabla editable

Vale, vale...No me habia dado cuenta de que estaba escribiendo una sola palabra...

Entonces ya e conseguido lo que necesitaba.

Muchisimas gracias por tu tiempo e interes, ha sido de gran ayuda

Hasta otra

Agur.
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 20:47.