Mark Franz
asked on
Create a "Grid" inside Picture Box
Check out this immage, http://www.temecularodrun.com/temp/grid.jpg
I know how to do the code loops to create the output results, but how do you do the "grid"? All those neat little black lines that contain the results.
In .asp this is a simple <tr><td> loop, how do you do it in VB?
If more points are necessary let me know.
I know how to do the code loops to create the output results, but how do you do the "grid"? All those neat little black lines that contain the results.
In .asp this is a simple <tr><td> loop, how do you do it in VB?
If more points are necessary let me know.
ASKER
OK, Cool. Now what if I want to have each number in a box? So that the results are in a full grid?
And your'e right, 100 point is more suiting...
And your'e right, 100 point is more suiting...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Beautiful... thank you sir!
Add a picturebox and a button to a form. Make the picture box a fair size.
Option Explicit
Private mGrid(1 To 10, 1 To 10)
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
For i = 1 To 10
For j = 1 To 10
mGrid(i, j) = i * j
Next j
Next i
Call sDrawGrid
End Sub
Public Sub sDrawGrid()
Dim sngStartX As Single, sngStartY As Single
Dim sngEndX As Single, sngEndY As Single
Dim i As Integer, j As Integer
Dim x As Single, y As Single, xx As Single, yy As Single
Dim sngW As Single, sngH As Single
Dim strCell As String
Dim lngColor As Long
With Picture1
sngStartX = 45
sngStartY = 45
sngEndX = .ScaleWidth - 45
sngEndY = .ScaleHeight - 45
'With keyword does not work with certain graphic methods, because of MS laziness.
For i = 1 To 10
If i Mod 2 = 0 Then 'alternate every second column
lngColor = vbWhite
Else
lngColor = RGB(255, 255, 192) 'light yello
End If
x = i / 10 * sngEndX 'right edge of coloured block
xx = (i - 1) / 10 * sngEndX 'left edge of coloured block
If xx = 0 Then xx = sngStartX 'correction to formula for first line
Picture1.Line (xx, sngStartY)-(x, sngEndY), lngColor, BF
Next i
For i = 1 To 10
x = i / 10 * sngEndX 'current position of line being drawn
Picture1.Line (x, sngStartY)-(x, sngEndY)
Next i
y = 1 / 10 * sngEndY
'Line at table head
Picture1.Line (sngStartX, y)-(sngEndX, y)
'Line at left edge
Picture1.Line (sngStartX, sngStartY)-(sngStartX, sngEndY)
'line at top
Picture1.Line (sngStartX, sngStartY)-(sngEndX, sngStartY)
'line at bottom
Picture1.Line (sngStartX, sngEndY)-(sngEndX, sngEndY)
'Tricky part, center numbers in boxes
For i = 1 To 10
For j = 1 To 10
strCell = Format(mGrid(i, j))
sngW = .TextWidth(strCell)
sngH = .TextHeight(strCell)
x = (CSng(i) * 2 - 1) / 20 * sngEndX - sngW / 2 'first part is simplification of formula ((i + (i-1))/2)/10 find center of cell
y = (CSng(j) * 2 - 1) / 20 * sngEndY - sngH / 2
.CurrentX = x
.CurrentY = y
Picture1.Print strCell
Next j
Next i
End With
End Sub