Sub OnClick
name=""
name=controls.LastClickedButton ' Last button
nm=controls.GetButtonCaption(name) ' Button's caption
If nm="Execute" Then
get_data()
init()
Plot_Data()
Regressionline()
EndIf
EndSub
Sub TextBoX_Input
GraphicsWindow.BrushColor="Red"
GraphicsWindow.FontSize=30
GraphicsWindow.DrawText(80,5," Input boxes and push execute ")
EXEC=Controls.AddButton("Execute",230,540)
Controls.SetSize(EXEC,300,50)
GraphicsWindow.FontSize=20
GraphicsWindow.DrawText(30,260,"Dividing X , Y") ' dividing number
GraphicsWindow.DrawText(30,280,"EXAM: 4,5")
DivBOX= Controls.AddTextBox(230,260)
Controls.SetSize(DivBOX,100,40)
Controls.SetTextBoxText(DivBOX,"4,5")
GraphicsWindow.DrawText(30,330,"Label X") ' Label-X name
GraphicsWindow.DrawText(30,350,"EXAM: Weight")
LABELXBOX=Controls.AddTextBox(230,330)
Controls.SetSize(LABELXBOX,300,40)
Controls.SetTextBoxText(LABELXBOX," Label X ")
GraphicsWindow.DrawText(30,400,"Label Y") ' Label-Y name
GraphicsWindow.DrawText(30,420,"EXAM: Height")
LABELYBOX=Controls.AddTextBox(230,400)
Controls.SetSize(LABELYBOX,300,40)
Controls.SetTextBoxText(LABELYBOX," Label Y ")
GraphicsWindow.DrawText(30,470,"Title name") ' Title name
GraphicsWindow.DrawText(30,490,"EXAM: Weight vs Height")
TTLBOX=Controls.AddTextBox(230,470)
Controls.SetSize(TTLBOX,300,40)
Controls.SetTextBoxText(TTLBOX," Test Graph ")
GraphicsWindow.DrawText(660,5,"Input X , Y data") ' X,Y data
GraphicsWindow.DrawText(660,25,"EXAM: 50 , 100 enter")
GraphicsWindow.DrawText(720,45,"80 , 150 enter")
MBOX= Controls.AddMultiLineTextBox(700,80)
Controls.SetSize(MBOX,100,500)
Controls.SetTextBoxText(MBOX," 50,100")
EndSub
Sub get_data
GWH=Controls.GetTextBoxText(GXYBOX)
GWidth= Text.GetSubText(GWH,1,text.GetIndexOf(GWH,",")-1) ' Gwidth
GHeight=Text.GetSubTextToEnd(GWH,text.GetIndexOf(GWH,",")+1) 'Ghight
DXY=Controls.GetTextBoxText(DivBOX)
XDiv= Text.GetSubText(DXY,1,text.GetIndexOf(DXY,",")-1) 'X-Dividing number
YDiv=Text.GetSubTextToEnd(DXY,text.GetIndexOf(DXY,",")+1) 'Y-Dividing number
LBLX=Controls.GetTextBoxText(LABELXBOX) ' Label-X
LBLY=Controls.GetTextBoxText(LABELYBOX) ' Label-Y
TTL=Controls.GetTextBoxText(TTLBOX) ' Title name
DatXY=Controls.GetTextBoxText(MBOX) ' X-Y data
Get_XYata() ' Pick Up X,Y data from multilinetextbox
EndSub
Sub Get_XYata ' Pick Up X,Y data from multilinetextbox
DatXY=Controls.GetTextBoxText(MBOX)
If Text.GetCharacterCode(text.GetSubText(DatXY,Text.GetLength(datXY),1))=10 Then
DatXY= text.GetSubText(DatXY,1,Text.GetLength(datXY)-2) ' if DatXY -end = Chr$(13)+chr$(10) then delete
EndIf
For i=1 To Text.GetLength(DatXY)
word1=text.GetSubText(datXY,i,1)
If word1=text.GetCharacter(13) Then ' delete chr$(13)
word1=""
ElseIf word1=text.GetCharacter(10) Then ' conversion Chr$(10) to ":" =delimiter
word1=":"
EndIf
midw=text.Append(midw,word1)
EndFor
midw=midw+":" ' connect all word and add ":" =delimiter
while midw<>""
NN=NN+1
midp1=Text.GetIndexOf(midw,",")
midp2=Text.GetIndexOf(midw,":")
px[NN]=Text.GetSubText(midw,1,midp1-1) ' pick up X-data
py[NN]=Text.GetSubText(midw,midp1+1,midp2-midp1-1) ' pick up Y-data
midw=Text.GetSubTextToEnd(midw,midp2+1)
EndWhile
EndSub
For i= 0 To XDiv
For j=GTop To GTop+Gheight-5 Step 10
GraphicsWindow.DrawLine(Gleft+i*(Gwidth/Xdiv),J,Gleft+i*(Gwidth/Xdiv),j+5)
EndFor
DivX=math.round(minX+i*((MaxX-minX)/Xdiv))
GraphicsWindow.DrawText(Gleft+i*(Gwidth/Xdiv)-20,GTop+GHeight+10,DivX)
EndFor
' Y---Axis
For i= YDiv To 0 Step -1
For j=GLeft To GLeft+Gwidth-5 Step 10
GraphicsWindow.DrawLine(j,GTop+i*(GHeight/Ydiv),j+5,GTop+i*(GHeight/Ydiv))
EndFor
DivY=math.Round(MaxY-i*((MaxY-minY)/Ydiv))
GraphicsWindow.DrawText(Gleft-40,GTop+i*(GHeight/Ydiv)-10,DivY)
EndFor
EndSub
Sub Plot_Data
GraphicsWindow.PenColor="Green"
GraphicsWindow.PenWidth=3
For i=1 To NN
plotx=Gleft + (PX[i]-minX)*Gwidth/(MaxX-MinX)
ploty=GTop + Gheight- (PY[i]-minY)*Gheight/(MaxY-MinY)
sc[i]=Shapes.AddEllipse(10,10)
Shapes.Animate(sc[i],plotx-5,ploty-5,1000)
EndFor
EndSub
Sub Regressionline
For i=1 To NN
sumx=sumx+px[i]
sumy=sumy+py[i]
sumX2=sumX2+px[i]*px[i]
sumXY=sumXY+px[i]*py[i]
sumY2=sumY2+py[i]*py[i]
EndFor
slope=(NN*sumXY-sumx*sumy)/(NN*sumx2-sumx*sumx) ' slope a
slope=math.Round(slope*100)/100 ' round a
intercept=sumy/NN-slope*sumx/NN ' intercept b
intercept=math.Round(intercept*100)/100 ' round b