Microsoft Small Basic

Program Listing: CCG458
posicaoX = 1
texto = ""
linha = 1
flagCaps = 1
maxLinhas = 10
arquivoEndereco = "arquivo.txt"


For i = 1 To maxLinhas
Array.SetValue("linha",i,"")
EndFor

GraphicsWindow.KeyDown = OnKeyDown
GraphicsWindow.Title = "Edit"
GraphicsWindow.FontSize = 12
comandosTopo()

Sub OnKeyDown
texto = Array.GetValue("linha", linha)
strKey = GraphicsWindow.LastKey
If ( strKey = "Back") Then
texto = Text.GetSubText(texto, 0, Text.GetLength(texto)-1)
Array.SetValue("linha",linha,texto)
If (Text.GetLength(texto) = 0) Then
linha = linha - 1
If (linha = 0) Then
linha = 1
EndIf
EndIf
ElseIf (strKey = "Space") Then
texto = texto + " "
Array.SetValue("linha",linha,texto)
ElseIf (strKey="Return") Then
linha = linha + 1
If (linha > maxLinhas) Then
GraphicsWindow.ShowMessage("Maximo de "+ maxLinhas +" linhas", "Atencao")
EndIf
ElseIf (strKey="Tab") Then
texto = texto + " " ' 2 espacos
Array.SetValue("linha",linha,texto)

ElseIf (strKey="F1") Then
linha = 1
limpaLinhas()
ElseIf (strKey="F2") Then
Buffer = ""
for i = 1 To linha
Buffer = Buffer + Array.GetValue("linha", i)
Buffer = Buffer + Text.GetCharacter(13)
EndFor
' The following line could be harmful and has been automatically commented.
' resultado = File.WriteContents(arquivoEndereco, Buffer)
If (resultado="SUCCESS") Then
GraphicsWindow.ShowMessage("Arquivo "+ arquivoEndereco +" salvo com sucesso", "Informacao")
linha = 1
limpaLinhas()
Else'
GraphicsWindow.ShowMessage("Erro ao salvar", "Informacao")
EndIf
ElseIf (strKey="Capital") Then
flagCaps = flagCaps * (-1)
ElseIf (strKey="Escape") Then
Program.End()
Else
if (flagCaps > 0) then
texto = texto + Text.ConvertToLowerCase( strKey )
else
texto = texto + Text.ConvertToUpperCase( strKey )
endif
Array.SetValue("linha",linha,texto)
EndIf

'Limpa tela
GraphicsWindow.Clear()
comandosTopo()
'Escreve Linhas que estao na memoria
For i = 1 To maxLinhas
texto = Array.GetValue("linha", i)
GraphicsWindow.DrawText(posicaoX, i * 12, texto)
EndFor
EndSub

Sub comandosTopo
GraphicsWindow.DrawText(1, 1, "F1-NOVO F2-SALVAR ESC-SAIR")
EndSub

Sub limpaLinhas
For i = 1 To maxLinhas
Array.SetValue("linha",i,"")
EndFor
EndSub