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.

Grid Editable 2

  • 0 Respuestas
  • 1228 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5320
  • Actividad:
    41.67%
  • Reputación 29
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 10:58:46 am »
Código: Visual Basic
  1. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  2.         ' Guardar los datos del grid
  3.         GuardarDatos
  4.  End Sub
  5.  
  6.  Private Sub Form_Resize()
  7.         ' Reajustar el tamaño del grid al de la ventana
  8.         ' Si tuviesemos otro control, por ejemplo una barra de estado,
  9.         ' restarle el ancho de la misma al Grid
  10.         If WindowState <> vbMinimized Then
  11.                 Grid2.Move 0, 0, ScaleWidth, ScaleHeight - picStatus.Height
  12.                 With cmdSalir
  13.                         .Left = picStatus.ScaleWidth - .Width - 90
  14.                         lblStatus.Width = .Left - 120 - lblStatus.Left
  15.                 End With
  16.         End If
  17.  End Sub
  18.  
  19.  Private Sub Grid2_Click()
  20.         ' Cuando se hace un sólo click en otra columna,
  21.         ' asigna el valor seleccionado, (como si se pulsara intro)
  22.         AsignarCelda
  23.  End Sub
  24.  
  25.  Private Sub Grid2_DblClick()
  26.         ' Editar al hacer dobleclick
  27.         LastRow = Grid2.Row
  28.         LastCol = Grid2.Col
  29.         '
  30.         OcultarControles
  31.         '
  32.         MostrarCelda
  33.  End Sub
  34.  
  35.  Private Sub Grid2_KeyDown(KeyCode As Integer, Shift As Integer)
  36.         ' Editar si se pulsa F2
  37.         If KeyCode = vbKeyF2 Then
  38.                 MostrarCelda
  39.         ElseIf KeyCode = vbKeyDelete Then
  40.                 ' Borrar las filas seleccionadas                                                    (13/May/01)
  41.                 BorrarFilas
  42.         End If
  43.  End Sub
  44.  
  45.  Private Sub Grid2_KeyPress(KeyAscii As Integer)
  46.         Select Case KeyAscii
  47.         ' Si se pulsa Intro, editar la celda
  48.         Case vbKeyReturn
  49.                 KeyAscii = 0
  50.                 MostrarCelda
  51.         ' Cancelar si se pulsa ESC
  52.         Case vbKeyEscape
  53.                 KeyAscii = 0
  54.                 AsignarCelda
  55.         ' Si se pulsa cualquier letra, editar la celda
  56.         Case 32 To 255
  57.                 MostrarCelda
  58.                 With Text1
  59.                   If .Visible Then
  60.                             '.Text = .Text & Chr$(KeyAscii)
  61.                                 .Text = Chr$(KeyAscii)
  62.                                 .SelStart = Len(.Text) + 1
  63.                         End If
  64.                 End With
  65.         End Select
  66.  End Sub
  67.  
  68.  Private Sub Grid2_Scroll()
  69.         ' Comprobar si la columna en la que está el control está visible
  70.         ' si es así, ocultar los controles
  71.         '
  72.         If Grid2.ColIsVisible(LastCol) = False Then
  73.                 OcultarControles
  74.                 Exit Sub
  75.         End If
  76.         If Grid2.RowIsVisible(LastRow) = False Then
  77.                 OcultarControles
  78.                 Exit Sub
  79.         End If
  80.         ' Comprobar si estaba visible antes de ocultarlo
  81.         ' y posicionarlo en la misma celda
  82.         If ControlVisible Then
  83.                 MostrarCelda
  84.         End If
  85.  End Sub
  86.  
  87.  Private Sub MostrarCelda()
  88.         Static YaEstoy As Boolean
  89.         '
  90.         ' Salir si es una de las celdas fijas
  91.         If Grid2.Col <= Grid2.FixedCols - 1 Or Grid2.Row <= Grid2.FixedRows - 1 Then
  92.                 Exit Sub
  93.         End If
  94.         '
  95.         If YaEstoy Then Exit Sub
  96.         YaEstoy = True
  97.         '
  98.         OcultarControles
  99.         '
  100.         LastRow = Grid2.Row
  101.         LastCol = Grid2.Col
  102.         '
  103.         ' Si es una nueva celda
  104.         With Grid2
  105.                 If .TextMatrix(LastRow, 0) = cNuevaFila Then
  106.                         .Rows = .Rows + 1
  107.                         .TextMatrix(LastRow, 0) = LastRow
  108.                         .TextMatrix(.Rows - 1, 0) = cNuevaFila
  109.                 End If
  110.         End With
  111.         '
  112.         Select Case LastCol
  113.         Case 2
  114.                 Combo1.Text = Grid2.TextMatrix(LastRow, LastCol)
  115.                 Combo1.Move Grid2.CellLeft - Screen.TwipsPerPixelX, Grid2.CellTop - Screen.TwipsPerPixelY
  116.                 Combo1.Width = Grid2.CellWidth + Screen.TwipsPerPixelX * 2
  117.                 Combo1.Visible = True
  118.                 Combo1.ZOrder
  119.                 Combo1.SetFocus
  120.         Case Else
  121.                 Text1.Move Grid2.CellLeft - Screen.TwipsPerPixelX, Grid2.CellTop - Screen.TwipsPerPixelY, Grid2.CellWidth + Screen.TwipsPerPixelX * 2, Grid2.CellHeight + Screen.TwipsPerPixelY * 2
  122.                 Text1.Text = Grid2.Text
  123.                 If Len(Grid2.Text) = 0 Then
  124.                         If LastRow > 1 Then
  125.                                 Text1.Text = Grid2.TextMatrix(LastRow - 1, LastCol)
  126.                         End If
  127.                 End If
  128.                 Text1.Visible = True
  129.                 If Text1.Visible Then
  130.                         Text1.ZOrder
  131.                         Text1.SetFocus
  132.                 End If
  133.         End Select
  134.         '
  135.         ControlVisible = True
  136.         '
  137.         YaEstoy = False
  138.  End Sub
  139.  
  140.  Private Sub SiguienteCelda()
  141.         If Grid2.Col < Grid2.Cols - 1 Then
  142.                 Grid2.Col = Grid2.Col + 1
  143.         Else
  144.                 Grid2.Col = 1
  145.                 If Grid2.Row < Grid2.Rows - 1 Then
  146.                         Grid2.Row = Grid2.Row + 1
  147.                 End If
  148.         End If
  149.  End Sub
  150.  
  151.  Private Sub Text1_GotFocus()
  152.         With Text1
  153.                 ' Posicionar el cursor al final
  154.                 .SelStart = Len(.Text)
  155.         End With
  156.  End Sub
  157.  
  158.  Private Sub Text1_KeyPress(KeyAscii As Integer)
  159.         ' Si se pulsa Intro, aceptar lo que se ha escrito
  160.         If KeyAscii = vbKeyReturn Then
  161.                 KeyAscii = 0
  162.                 AsignarCelda
  163.                 SiguienteCelda
  164.         ' Si se pulsa ESC, cancelar la edición
  165.         ElseIf KeyAscii = vbKeyEscape Then
  166.                 KeyAscii = 0
  167.                 Text1.Visible = False
  168.                 ControlVisible = False
  169.         End If
  170.  End Sub
  171.  
  172.  Private Sub AsignarCelda()
  173.         ' Asignar al grid el texto escrito o seleccionado del combo
  174.         Dim s As String
  175.         '
  176.         OcultarControles
  177.         ControlVisible = False
  178.         '
  179.         ' Asignar el texto anterior a la celda
  180.         Select Case LastCol
  181.         Case 2
  182.                 '
  183.                 Grid2.TextMatrix(LastRow, LastCol) = Combo1.Text
  184.         Case Else
  185.                 s = Text1.Text
  186.                 ' si es la columna de la fecha...
  187.                 If LastCol = 1 Then ' Fecha
  188.                         s = AjustarFecha(s)
  189.                 End If
  190.                 Grid2.TextMatrix(LastRow, LastCol) = s
  191.         End Select
  192.  End Sub
  193.  
  194.  
« Última modificación: Julio 08, 2011, 10:09:56 am por ANTRAX »


 

¿Te gustó el post? COMPARTILO!



Simular un MSFlexGrid Editable

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1934
Último mensaje Julio 26, 2010, 10:58:02 am
por ANTRAX
Grid Editable 4

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1289
Último mensaje Julio 26, 2010, 11:00:03 am
por ANTRAX
Grid Editable 3

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1339
Último mensaje Julio 26, 2010, 10:59:33 am
por ANTRAX