Article ID: 140889
Article Last Modified on 1/8/2003
Property Value ----------------------- AutoRedraw True ScaleMode 3 - Pixel Height 2000 Width 3000
' 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
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 grid_rows
x2% = grid_line_col(grid_cols)
y2% = grid_line_row(i)
Picture1.Line (0, grid_line_row(i))-(x2%, y2%)
Next
Call grid_edit_move(0, 0)
End Sub
Private Sub Picture1_GotFocus ()
Text1.SetFocus
End Sub
' The following line should appear on one line.
Private Sub Picture1_MouseDown (Button As Integer, shift As Integer,
x As Single, y As Single)
Dim col As Integer
Dim row As Integer
Dim i As Integer
' Find the cell clicked in.
col = grid_col
row = grid_row
For i = 0 To grid_cols - 1
If x>=grid_line_col(i) And x<grid_line_col(i+1) Then
col = i
Exit For
End If
Next
For i = 0 To grid_rows - 1
If y>=grid_line_row(i) And y<grid_line_row(i+1) Then
row = i
Exit For
End If
Next
' Move the text box there.
Call grid_edit_move(col, row)
End Sub
Additional query words: 1.00 2.00 3.00 4.00 vb4win vb416 optimize
Keywords: KB140889