I have implemented some graphing code using a picturebox (and a few flexgrids for data storage) for a project.

I have 3 computers with VB6 installed on all of them. After compiling the program I copied just the executable to the other computers for testing, and noticed that it works on one of them completely fine but on the other one, it doesn't plot the graph (however it draws the axes). After distributing my program to a few other team members, I realise that they have the same problem.

Initially I thought that they didn't have the required dll files (for MS Chart and MS Flexgrid), but I was wrong. I read something about p-code and n-code but I am not sure what the difference is, and whether thats got anything to do with my problem

Then, since the program involved saving text to files, I thought that somehow Windows blocked that from happening (so the axes would plot but the actual points wouldn't). However, the text files were created properly and so it must have something to do with the actual plot procedure:


Private Sub command_plotnow_Click()
'This sub procedure produces a scatter plot of the original data (x,y)

Dim xaxis As Double, yaxis As Double, xsrange As Double, Ysrange As Double
Dim rx As Double, ry As Double
Dim k As Integer, l As Integer, nx As Integer, ny As Integer, nxx As Integer, nyy As Integer, r As Integer
Dim xt(1 To 500) As Double, xtt(1 To 500) As Double
Dim yt(1 To 500) As Double, ytt(1 To 500) As Double

picPlot.Cls

'Read the data from file "c:\temp1.txt" passed from form "frmData"

Open "c:\temp1.txt" For Input As #1
Input #1, xsmin, xsmax, xtick, xstick
Input #1, ysmin, ysmax, ytick, ystick
Input #1, n
For k = 1 To n
Input #1, x(k), y(k)
Next k
Close #1

'Determine axes ranges and other plot parameters
If xsmin <= 0 Then
xaxis = 0#
Else
xaxis = xsmin
End If

If ysmin <= 0 Then
yaxis = 0#
Else
yaxis = ysmin
End If

xsrange = xsmax - xaxis: Ysrange = ysmax - yaxis
rx = Abs(xsrange) / 200: ry = Abs(Ysrange) / 200
If Abs(xsrange) < Abs(Ysrange) Then
r = rx
Else
r = ry
End If

'Set scale for plot, draw axes, ticks, and sub-ticks

picPlot.Scale (xsmin - xtick, ysmax + ytick)-(xsmax + xtick, ysmin - ytick)
picPlot.Line (xaxis, ysmin)-(xaxis, ysmax)
picPlot.Line (xsmin, yaxis)-(xsmax, yaxis)
picPlot.Line (xsmax, ysmin)-(xsmax, ysmax)
picPlot.Line (xsmin, ysmax)-(xsmax, ysmax)

nx = xsrange / xtick + 1: ny = Ysrange / ytick + 1
For k = 1 To nx
xt(k) = xsmin + (k - 1) * xtick
picPlot.Line (xt(k), yaxis - ytick / 10)-(xt(k), yaxis + ytick / 10)
Next k
For k = 1 To ny
yt(k) = ysmin + (k - 1) * ytick
picPlot.Line (xaxis - xtick / 10, yt(k))-(xaxis + xtick / 10, yt(k))
Next k

nxx = xtick / xstick
For k = 1 To nx - 1
For l = 1 To nxx
xtt(l) = xt(k) + (l - 1) * xstick
picPlot.Line (xtt(l), yaxis - ytick / 20)-(xtt(l), yaxis + ytick / 20)
Next l
Next k

nyy = ytick / ystick
For k = 1 To ny - 1
For l = 1 To nyy
ytt(l) = yt(k) + (l - 1) * ystick
picPlot.Line (xaxis - xtick / 20, ytt(l))-(xaxis + xtick / 20, ytt(l))
Next l
Next k

'Print the tick values near the tick marks

For k = 1 To nx
picPlot.CurrentX = xt(k) - xtick / 10
picPlot.CurrentY = yaxis - ytick / 2.5
picPlot.Print xt(k)
Next k
For k = 1 To ny
picPlot.CurrentX = xaxis - xtick / 1.5
picPlot.CurrentY = yt(k) + ytick / 5
picPlot.Print yt(k)
Next k

'Draw circles repesenting the data points

For k = 1 To n
picPlot.Circle (x(k), y(k)), r
Next k

command_plotnow.Visible = False
picFit.Cls

End Sub




Please could someone help me out.


Thanks.



JR.