Visual Basic - insertar boton en una celda

Life is soft - evento anual de software empresarial
 
Vista:

insertar boton en una celda

Publicado por Anaasinco (72 intervenciones) el 19/12/2005 17:33:31
Hola, y gracias por leerme.

Mi pregunta es la siguiente:¿Como tendría que hacer para insertar un botón en cada una de las celdas que componen la columna 5 de un MsFlexGrid.

Gracias.

Ana
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:insertar boton en una celda

Publicado por SetFocus (183 intervenciones) el 19/12/2005 21:28:48
Hola! Te paso un ejemplo que hace algo parecido a lo que queres, solo que el boton no esta visible hasta que usurio ingresa en alguna celda de la columna de los botones.
La idea es asi, en el formulario se encuentra un boton oculto, que se hace visible cada vez que se ingresa en alguna celda de la columna. Bueno en el ejemplo te vas a dar cuenta.
Para ejecutarlo, en un Form en blanco, agrega un MSFlexGrid y un CommandButton, sin cambiar los nombres por defecto que les pone Visual Basic. Luego copia y pega el siguiente codigo en la seccion General del Form

Private Sub Command1_Click()

With MSFlexGrid1
MsgBox "Producto : " & .TextMatrix(.RowSel, 1) & " - " & _
.TextMatrix(.RowSel, 2) & vbCr & _
"Precio : " & .TextMatrix(.RowSel, 3)
End With

End Sub

Private Sub Form_Load()

Command1.Visible = False
Command1.Caption = vbNullString

' Configuro el Flex,agregando nombres a los encabezados
' y agrego datos al mismo
With MSFlexGrid1
.Rows = 6
.Cols = 5
.FixedRows = 1
.FixedCols = 1
.ColWidth(0) = 200

.TextMatrix(0, 1) = "Código"
.ColWidth(1) = 800
.ColAlignment(1) = flexAlignCenterCenter

.TextMatrix(0, 2) = "Descripción"
.ColWidth(2) = 2000
.ColAlignment(2) = flexAlignLeftCenter

.TextMatrix(0, 3) = "Precio"
.ColWidth(3) = 1200
.ColAlignment(3) = flexAlignRightCenter

.TextMatrix(0, 4) = "Boton"
.ColWidth(4) = 1200

.TextMatrix(1, 1) = 1
.TextMatrix(1, 2) = "Arroz"
.TextMatrix(1, 3) = 10
.TextMatrix(2, 1) = 2
.TextMatrix(2, 2) = "Azucar"
.TextMatrix(2, 3) = 20
.TextMatrix(3, 1) = 3
.TextMatrix(3, 2) = "Aceite"
.TextMatrix(3, 3) = 30
.TextMatrix(4, 1) = 4
.TextMatrix(4, 2) = "Fideos"
.TextMatrix(4, 3) = 40
.TextMatrix(5, 1) = 5
.TextMatrix(5, 2) = "Bomba Nuclear"
.TextMatrix(5, 3) = 50
End With

End Sub

Private Sub MSFlexGrid1_EnterCell()

With MSFlexGrid1
'si es la cloumna 4 muestro el boton y lo ajusto
'a la medida de la celda(en tu caso es la columna 5,claro)
If .Col = 4 Then
Command1.Move .Left + .CellLeft, .Top + .CellTop, .CellWidth - 8, .CellHeight - 8
Command1.Visible = True
End If
End With

End Sub

Private Sub MSFlexGrid1_LeaveCell()

'al salir de la celda oculto el boton
Command1.Visible = False

End Sub

Al correr el ejemplo vas aver que lo que hace el boton solamente es mostrar el contenido de la fila actual.

Bueno,espero que te sirva.Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar boton en una celda

Publicado por Anaasinco (72 intervenciones) el 22/12/2005 13:29:02
Muchas gracias por resonder. Este ejemplo ya lo conocía pero mi intención es que salga en todas no solo en aquella que pulso. ¿Tiene Solución?

he probado a crear botonoes en tiempo de ejecución e ir metiendolos en las celdas a la vez que cargo el grid, pero no los muestra, en cambio si lo hago fuera del grid si aparecen.

Entoces sin necesito crear un campo check que vaya en cada celda del grid.

No existe algun componente mejor y no muy complejo para esta necesidad.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar boton en una celda

Publicado por Anaasinco (72 intervenciones) el 30/12/2005 15:32:24
Ninguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA POR FAVOR!

Publicado por Anaasinco (72 intervenciones) el 03/01/2006 13:12:39
Por favor, si existe alguna solución o alternativa, seguiré preguntando hasta tener la suerte de que alguien que tenga una solución lo lea.

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar boton en una celda

Publicado por LayerZeek (12 intervenciones) el 16/02/2006 22:08:16
hola... te veo un poco afligido asi que espero q lo q sigue t sirva.. no es lo mas optimo pero puede servirte...

de partida, no es necesario que uses botones en flexgrid, ya que esta operacion puede suplirse con los mismos metodos que posee msflexgrid...

t explico... el metodo SelChange, permite que dado el cambio en el foco de la grilla, esto es la seleccion de una celda de la grilla; se realiza cierta operacion, q evidentemente tu deberas programar, ahora existe un unico problema, que pasa cuando seleccionas 2 veces la misma celda?... esto no funciona, pero con un pequeño parche podras arreglarlo, ya sea con el metodo click o bien refrescando la grilla...

se que no es lo que buscas, pero soluciona tu problema en parte, ademas, es super poco el codigo que utilizas...

espero t sirva....

pd: debes tener bien en cuenta que columna y fila es la seleccionada...
pej:
private sub flexgrid_selchange()
if flexgrid.col=x and flexgrid.row=y then
rutina 1
elseif flexgri.... ....
....
.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar