Microsoft Small Basic

Program Listing: QMD177
Initialise()

While 0=0
UpdateMultilineTextBox()

If buttonClicked Then
lastBtn = Controls.LastClickedButton
Controls.SetTextBoxText(txtBox Controls.GetButtonCaption(lastBtn))

buttonClicked = "False"
EndIf

Program.Delay(50)
EndWhile

Sub UpdateMultilineTextBox
mseX = GraphicsWindow.MouseX
mseY = GraphicsWindow.MouseY

For i = 1 To Array.GetItemCount(ctrlCurse)
If mseX > Shapes.GetLeft(ctrlCurse[i]) And mseX < Shapes.GetLeft(ctrlCurse[i]) + ctrl["width"] Then
If mseY > Shapes.GetTop(ctrlCurse[i]) And mseY < Shapes.GetTop(ctrlCurse[i]) + ctrl["height"] Then
Shapes.SetOpacity(ctrlCurse[i] 25)
Else
Shapes.SetOpacity(ctrlCurse[i] 0)
EndIf
Else
Shapes.SetOpacity(ctrlCurse[i] 0)
EndIf
EndFor
EndSub

Sub Initialise
GraphicsWindow.Show()

txt[1] = "1: Hello"
txt[2] = "2: World"
txt[3] = "3: ML TextBox"

ctrl = "width=100;height=15"
pad = 5

mlTxtBox = Controls.AddMultiLineTextBox(10-pad 10-pad)
Controls.SetSize(mlTxtBox, ctrl["width"] + pad*2 , Array.GetItemCount(txt) * ctrl["height"] + pad*2)

For i = 1 To Array.GetItemCount(txt)
txtShp[i] = Shapes.AddText(txt[i])
Controls.SetSize(txtShp[i] ctrl["width"] ctrl["height"])
Shapes.Move(txtShp[i], 10, 10 + (i-1) * ctrl["height"])

ctrlCurse[i] = Controls.AddButton(txt[i] 0 0)
Controls.SetSize(ctrlCurse[i] ctrl["width"]+pad ctrl["height"])
Shapes.Move(ctrlCurse[i], 10, 10 + (i-1) * ctrl["height"])
Shapes.SetOpacity(ctrlCurse[i] 0)
EndFor

txtBox = Controls.AddTextBox(10-pad, pad*2 + Array.GetItemCount(txt)*ctrl["height"] + 10 )

Controls.ButtonClicked = OnButtonClicked
EndSub

Sub OnButtonClicked
buttonClicked = "True"
EndSub