Microsoft Small Basic

Program Listing: XQF852
' Rectangle
' Copyright (c) 2013 Nonki Takahashi
'
Init()
Calc()
Controls.TextTyped = OnTextTyped
Sub OnTextTyped
Calc()
EndSub
Sub Calc
base = Controls.GetTextBoxText(oBase)
height = Controls.GetTextBoxText(oHeight)
area = base * height
perimeter = 2 * (base + height)
Shapes.SetText(oArea, area)
Shapes.SetText(oPerimeter, perimeter)
If oRectangle <> "" Then
Shapes.Remove(oRectangle)
EndIf
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "White"
oRectangle = Shapes.AddRectangle(base * cm, height * cm)
Shapes.Move(oRectangle, cm, cm * 3)
EndSub
Sub Init
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
cm = 36 ' [px / cm]
GraphicsWindow.BackgroundColor = "LightGray"
GraphicsWindow.PenColor = "DimGray"
For x = 0 To gw Step cm
GraphicsWindow.DrawLine(x, 0, x, gh)
EndFor
For y = 0 To gh Step cm
GraphicsWindow.DrawLine(0, y, gw, y)
EndFor
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(cm, cm, "Base")
oBase = Controls.AddTextBox(cm * 3, cm)
Controls.SetTextBoxText(oBase, "6")
GraphicsWindow.DrawText(cm, cm * 2, "Height")
oHeight = Controls.AddTextBox(cm * 3, cm * 2)
Controls.SetTextBoxText(oHeight, "4")
GraphicsWindow.DrawText(cm * 10, cm, "Area")
oArea = Shapes.AddText(0)
Shapes.Move(oArea, cm * 12, cm)
GraphicsWindow.DrawText(cm * 10, cm * 2, "Perimeter")
oPerimeter = Shapes.AddText(0)
Shapes.Move(oPerimeter, cm * 12, cm * 2)
EndSub