Grid Editable 2

  • 0 Respuestas
  • 1904 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5672
  • Actividad:
    20%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Grid Editable 2

  • 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 »


 

Simular un MSFlexGrid Editable

Iniciado por ANTRAX

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

Iniciado por ANTRAX

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

Iniciado por ANTRAX

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