sexta-feira, 19 de dezembro de 2008

mini Editor de Texto

Eu comecei a escrever um pequeno editor de texto usando o Microsoft Small Basic na intenção de utilizar mais recursos da linguagem.

Este exemplo ainda nào esta concluido mas é uma bom começo ;-) vamos dizer que esta é a versao 0.1

miniEditor_v0.1.sb

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
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


Falta programar o restante das teclas, mas espero que desperte a curiosidade para o uso dos comandos e funcionalidades.


[update] codigo fonte publicado link

2 comentários:

  1. That looks great. While I don't understand the the language I get the gist of the program and it works well.

    ResponderExcluir
  2. Cara valeu, muito bom esse post eu tinha uma duvida de como salvar arquivos no Small Basic e esse post me ajudo muito.

    ResponderExcluir