comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Simular un MSFlexGrid Editable

  • 0 Respuestas
  • 2021 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    33.33%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 10:58:02 am »
Grid con casillas editables.
En el ejemplo veremos cómo usar tanto un control TextBox como un comboBox.
como verás en el código es fácil decidir si debemos mostrar el textbox o el combo... dependiendo de lo que necesitemos usar... en caso de que necesites usar diferentes combos, te recomiendo que uses un array del control combo1 para que te resulte fácil de interceptar las pulsaciones y otras acciones con dichos controles... puede que en otra ocasión amplíe este ejemplo con esto que digo, además de usar un control checkbox... pero eso será en otra ocasión... así que... paciencia.

Te explico lo que el código hace... aunque puedes seguirlo sin problemas, eso espero, con los comentarios incluidos en el código de ejemplo.

En principio el Grid sólo tendrá una fila "disponible", cuando pulsamos en una de las celdas de la última fila, la cual está identificada con ">>*", se creará una nueva fila... cuando pruebes el código de ejemplo, sabrás de que estoy hablando.

Para introducir algo en cualquiera de las celdas, podemos hacerlo de varias formas:
-haciendo doble-click en la celda a editar,
-escribiendo directamente en el grid,
-pulsando la tecla F2

Para aceptar lo que hemos escrito, pulsaremos Intro o simplemente haciendo Click en cualquier otra celda.
Si se pulsa ESC, se cancela la edición de la celda.

En el código mostrado, uso dos procedimientos para guardar el contenido del grid en un fichero de texto y para leer de ese fichero y asignarlo al grid. Este código tendrás que adaptarlo a los campos que tengas en el grid, aunque usado tal y como lo muestro te puede ser útil al 100%.

Bueno, me dejo de "cháchara" y te muestro el código.

El formulario contiene los siguientes controles:
Un control FlexGrid llamado Grid2,
un TextBox llamado Text1,
un ComboBox llamado Combo1,
un PictureBox llamado picStatus con la propiedad Align = 2 (para que se ajuste a la parte inferior),
una etiqueta llamada lblStatus, (insertada en el picStatus),
un botón llamado cmdSalir, (insertado en el picStatus).

Nota:
No tienes que preocuparte por "insertar" los dos últimos controles mencionados en el PictureBox, ya que eso se hace en el código del evento Form_Load

Como bono extra, una función para "interpretar" fechas y asignar el formato que queramos a partir de varias formas de entrada, por ejemplo, acepta fechas con y sin separadores, e incluso sin indicar el año...

Código: Visual Basic
  1.  
  2. '------------------------------------------------------------------------------
  3. ' Prueba de Grid con celdas editables                                                    (09/May/01)
  4. ' Revisado: 17/May/2001
  5. '
  6. ' Ejemplo de código con TextBox y ComboBox
  7. '
  8. ' ©Guillermo 'guille' Som, 2001
  9. '------------------------------------------------------------------------------
  10. Option Explicit
  11.  
  12. Private sFicDatos As String              ' Fichero con los datos del grid
  13. Const cNuevaFila As String = ">>*" ' Para indicar que es una nueva fila
  14. Private ControlVisible As Boolean ' Si el control está o no visible (editándose)
  15. Private LastRow As Long                  ' La última fila en que se editó
  16. Private LastCol As Long                  ' La última columna en que se editó
  17.  
  18. Private Sub cmdSalir_Click()
  19.         Unload Me
  20. End Sub
  21.  
  22. Private Sub Combo1_Change()
  23.         If Combo1.Visible Then
  24.                 Grid2.TextMatrix(LastRow, LastCol) = Combo1.Text
  25.                 AsignarCelda
  26.         End If
  27. End Sub
  28.  
  29. Private Sub Combo1_Click()
  30.         Combo1_Change
  31. End Sub
  32.  
  33. Private Sub Combo1_KeyPress(KeyAscii As Integer)
  34.         If KeyAscii = vbKeyReturn Then
  35.                 KeyAscii = 0
  36.          AsignarCelda
  37.                 SiguienteCelda
  38.         ElseIf KeyAscii = vbKeyEscape Then
  39.                 KeyAscii = 0
  40.                 Combo1.Visible = False
  41.         End If
  42. End Sub
  43.  
  44. Private Sub Form_Load()
  45.         Dim i As Long
  46.         Dim s As String
  47.         '
  48.         picStatus.Height = 585
  49.         With lblStatus
  50.                 .Caption = " Código de ejemplo: ©Guillermo 'guille' Som, 2001 <mensaje@elguille.info>"
  51.                 Set .Container = picStatus
  52.                 .Height = 285
  53.                 .BorderStyle = vbFixedSingle
  54.                 .Left = 90
  55.                 .Top = 120
  56.                 .Visible = True
  57.         End With
  58.         With cmdSalir
  59.                 Set .Container = picStatus
  60.                 .Height = 405
  61.                 .Top = 60
  62.                 .Visible = True
  63.         End With
  64.         '
  65.         s = App.Path
  66.         sFicDatos = s & IIf(Right$(s, 1) = "\", "", "\") & "PruebaGrid.txt"
  67.         '
  68.         With Combo1
  69.                 .Clear
  70.                 For i = 1 To 20
  71.                         .AddItem i
  72.                 Next
  73.         End With
  74.         '
  75.         OcultarControles
  76.         '
  77.         CabeceraGrid
  78.         LeerDatos
  79. End Sub
  80.  
  81.  
« Última modificación: Julio 08, 2011, 10:09:38 am por ANTRAX »


 

¿Te gustó el post? COMPARTILO!



Como cambiar de color una columna de MSFlexgrid

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2514
Último mensaje Julio 26, 2010, 11:30:30 am
por ANTRAX
Como Guardar un MsFlexGrid en una Base de DAtos

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2833
Último mensaje Julio 26, 2010, 10:55:49 am
por ANTRAX
Cómo imprimir un MSFLEXGRID

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1775
Último mensaje Julio 26, 2010, 10:53:14 am
por ANTRAX
Grid Editable 3

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1417
Último mensaje Julio 26, 2010, 10:59:33 am
por ANTRAX
Grid Editable 4

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1380
Último mensaje Julio 26, 2010, 11:00:03 am
por ANTRAX