El control de cuadrícula personalizado no proporciona ningún texto capacidad de edición. Sin embargo, puede crear una cuadrícula de estilo de la hoja de cálculo que permite la edición mediante un cuadro de imagen y un cuadro de texto.
Volver al principio
Más información
No se recomienda crear una cuadrícula de estilo de la hoja de cálculo con una gr...
No se recomienda crear una cuadrícula de estilo de la hoja de cálculo con una gran matriz de los controles de cuadro de texto porque al hacerlo así se ralentizar su programa y utilizan demasiados recursos del sistema.
Una forma eficaz de crear una cuadrícula es dibujar líneas verticales y horizontales para representar las celdas de la cuadrícula. Utilice un cuadro de texto único para permitir la edición de la celda activa. Compruebe los eventos MouseDown mover el cuadro de texto a la posición de celda actualmente activa y utilizar el método Print para dibujar texto en una celda cuando el cuadro de texto se mueve fuera de la celda. Almacenar a continuación, los valores de celda de cuadrícula en dos matriz bidimensional, indizada por la columna y fila.
Se puede agregar código para permitir el resaltado de las áreas, mediante teclas de dirección para moverse entre celdas y así sucesivamente.
Ejemplo paso a paso
1. Inicie Visual Basic o en el menú Archivo, elija Nuevo proyecto (ALT, F, N) si Visual Basic ya se está ejecutando. Se creará Form1 de manera predeterminada.
2. Coloque una imagen (Picture1) en Form1 y establezca sus propiedades como sigue:
Property Value
-----------------------
AutoRedraw True
ScaleMode 3 - Pixel
Height 2000
Width 3000
3. Coloque un cuadro de texto (Text1) en Picture1 haciendo clic en la herramienta de cuadro de texto. El puntero del mouse se convierte en cruz. Haga clic y arrastre dentro Picture1 para colocar un rectángulo gris aparece en Picture1.
4. Agregue el código siguiente en la sección Declaraciones general de Form1:
' Maximum grid size.
Const grid_col_max = 10
Const grid_row_max = 20
' Current grid size.
Dim grid_cols As Integer
Dim grid_rows As Integer
' Current cell position.
Dim grid_col As Integer
Dim grid_row As Integer
' Grid string contents.
Dim grid_text(grid_col_max, grid_row_max) As String
' Grid line positions.
Dim grid_line_col(grid_col_max) As Integer
Dim grid_line_row(grid_col_max) As Integer
' grid_edit_move.
' Moves the grid edit text box to a new position.
'
Public Sub grid_edit_move (col As Integer, row As Integer)
Dim x1 As Integer ' Picture box positions.
Dim y1 As Integer
Dim x2 As Integer
Dim y2 As Integer
' Save text box contents to grid array.
grid_text(grid_col, grid_row) = Text1.Text
' Clear current cell.
x1 = grid_line_col(grid_col) + 1
y1 = grid_line_row(grid_row) + 1
x2 = grid_line_col(grid_col + 1) - 1
y2 = grid_line_row(grid_row + 1) - 1
Picture1.Line (x1, y1)-(x2, y2), Picture1.BackColor, BF
' Print text box contents to current cell.
Picture1.CurrentX = x1 + 3
Picture1.CurrentY = y1 + 3
Picture1.Print Text1.Text
' Set new grid current cell.
grid_col = col
grid_row = row
' Move text box to new cell.
x1 = grid_line_col(grid_col)
y1 = grid_line_row(grid_row)
w! = grid_line_col(grid_col + 1) - x1
h! = grid_line_row(grid_row + 1) - y1
Text1.Move x1 + 1, y1 + 1, w! - 1, h! - 1
' Copy contents of new cell to text box.
Text1.Text = grid_text(grid_col, grid_row)
End Sub
5. Agregue el código siguiente al procedimiento de evento Load del formulario:
Private Sub Form_Load ()
' Set grid size.
grid_cols = 4
grid_rows = 6
' Remove border.
Picture1.BorderStyle = 0
' Set column widths and row heights.
Dim i As Integer
Dim d As Integer
d = 0
For i = 0 To UBound(grid_line_col)
grid_line_col(i) = d
d = d + 40
Next
d = 0
For i = 0 To UBound(grid_line_row)
grid_line_row(i) = d
d = d + 20
Next
' Draw grid lines.
For i = 0 To grid_cols
x2% = grid_line_col(i)
y2% = grid_line_row(grid_rows)
Picture1.Line (grid_line_col(i), 0)-(x2%, y2%)
Next
For i = 0 To