PDA

Ver la versión completa : MSFlexGrid (vb6) URGENTE!



Don Balon
14/10/2009, 19:59
Esta porqueria me esta volviendo loco. Necesito saber como poder editar cualquier celda estando en tiempo de ejecucion o NO. Como tomar el index de cada celda. Como agregar filas o columnas (con ".additem" solo podia agregar filas). Como guardar la informacion de las celdas en registrios (archivos), supongo que seria lo mismo que con una matriz. En si necesito saber todos los conceptos basicos de como manejar esta herramienta.
Saludos y gracias.

Don Balon
14/10/2009, 23:06
Bueno aca encontre como poder editar la Grid en runtime, una bldes



1. Private Sub MiGrid_KeyPress(KeyAscii As Integer)
2.
3. If KeyAscii >= 32 And KeyAscii <= 127 Then
4. MiGrid.Text = MiGrid.Text & Chr(KeyAscii)
5. End If
6.
7. End Sub
8.
9. Private Sub MiGrid_KeyUp(KeyCode As Integer, Shift As Integer)
10. Select Case KeyCode
11. Case vbKeyDelete
12. MiGrid.Text = ""
13. Case vbKeyBack
14. If Len(MSFlexGrid1.Text) > 0 Then
15. MiGrid.Text = Left(MiGrid.Text, Len(MiGrid.Text) - 1)
16. End If
17. End Select
18. End Sub

eva2014
15/10/2009, 08:32
mira hace bastante que no programamo en visual basic pero yo te recomendaria que uses el msDatagrid que es mucho mejor.

Don Balon
15/10/2009, 12:53
mira hace bastante que no programamo en visual basic pero yo te recomendaria que uses el msDatagrid que es mucho mejor.

Ese es el problema, el profesor solo nos habilito esta herramienta.
Saludos.

eva2014
15/10/2009, 16:24
Ese es el problema, el profesor solo nos habilito esta herramienta.
Saludos.

aps, hoy busco a ver si me quedo algun apunte sobre este componente, si lo encuentro posteo.

Don Balon
15/10/2009, 18:10
aps, hoy busco a ver si me quedo algun apunte sobre este componente, si lo encuentro posteo.

Dale gracias, espero tu respuesta.

Don Balon
18/10/2009, 18:02
Listo, ya lo pude resolver.
Gracias a tdos.

constelacion
28/10/2009, 00:53
postea la solucion :-D

Don Balon
02/11/2009, 20:40
postea la solucion :-D

Si bien en MSFlexGrid no se puede editar las celdas en runtime y tampoco las celdas pueden tomar foco por separadas con setfocus, para ellos se usa las propiedades .row y .col. En fin, lo que hice (investigue en inet) es poner un txtBox en visible=false y que cuando tocas en alguna celda (esta devuelve el .col y .row estando en el evento _Click()) posiciono el txtBox al .top y .left de la celda y lo autoajusto al .Width y .Height de la celda, por ultimo el visible en true y pareciera que uno esta editando la celda en tiempo de ejecucion. Igual hay que meterle demasiados parches para poder fixear algunas porquerias, por ejemplo para el evento leave de la MSFlexGrid, el leave del txtBox, cuando MSFlexGrid y el txtBox toma foco, muchas validaciones. Tambien se puede programar que apretando enter se guarde el contenido del txtBox en la celda y a esto hay q sacarle el beep del sistema porque sino jode mucho.
Y tambien mas validaciones para las celdas que se pueden editar y no.

EPP
11/11/2009, 20:44
O sea que no editas la celda sino un TextBox que simula la celda?
:S
Que trucho!
No lo tuyo sino la forma de trabajar con ese complemento.
Definitivamente si no podes hacerlo en tu vida vuelvas a usarlo o preguntale al profe para que les da algo que no te permite algo tan simple como eso.

Saludos

Don Balon
11/11/2009, 21:38
O sea que no editas la celda sino un TextBox que simula la celda?
:S
Que trucho!
No lo tuyo sino la forma de trabajar con ese complemento.
Definitivamente si no podes hacerlo en tu vida vuelvas a usarlo o preguntale al profe para que les da algo que no te permite algo tan simple como eso.

Saludos

Me parece muy original la forma esa y sí puedo. Sino como comenté anteriormente podés usar el evento Keypress de la Grid y ahí si podes editar la celda directamente pero me parece más trucho, además de que no dispone de las herramientas de un textBox y hay que validar demasiadas cosas.

vofijatee
12/11/2009, 11:32
Todo lo que sea vb6 es así de rebuscado :P

Don Balon
23/11/2009, 15:14
Todo lo que sea vb6 es así de rebuscado :P

Pero es lo que lo hace así de divertido.