'Testprogramm fürs TextObjekt
'es geht hierbei nur um die korrekte Bewegung des Cursors, sowie DEL,BACKSPACE,RETURN und die Zeilenlogik innerhalb des TOs
'Das Textobjekt verwaltet lediglich mehrzeiligen Text und eine Schreibmarke
'Blockoperationen sind nicht implementiert.
'Kein Textscrolling. Diese Funktion ist kein Bestandteil des Textobjektes und wird es auch nicht werden!!!

#include "sGUI\TextObject.bas"

dim as TextObject txtobj
'txtobj.LoadText "Blaa.txt"  'aus Datei
txtobj.SetText "Test//das war eine Leerzeile/","/"  'aus einem String

screen 19,32,,&H04

txtobj.printout

dim as integer enable,ASCCODE,EXTENDED
dim as string KEY

do
  sleep 1
  KEY=""
  ASCCODE=-1
  EXTENDED=0

  KEY=inkey
  
  'Tastendruck aufbereiten
  if KEY<>"" then
    if len(KEY)=2 then
      EXTENDED=asc(left(KEY,1))
      KEY=right(KEY,1)
    end if
    ASCCODE=asc(KEY)


    if  EXTENDED then

      'Cursorbewegung mit Pfeiltasten
      if ASCCODE=75 then txtobj.CursorLeft
      if ASCCODE=77 then txtobj.CursorRight
      if ASCCODE=72 then txtobj.CursorUp
      if ASCCODE=80 then txtobj.CursorDown
      'by MilkFreeze, modified by Muttonhead
      if ASCCODE=71 then txtobj.CursorKeyPos1
      if ASCCODE=79 then txtobj.CursorKeyEnd
      
      'DEL Windows
      #ifdef __fb_win32__
        if ASCCODE=83 then txtobj.KeyDelete
      #endif

    else

      'BACKSPACE
      if ASCCODE=8 then txtobj.KeyBackspace

      'DEL Linux
      #ifdef __fb_linux__
        if ASCCODE=127 then txtobj.KeyDelete
      #endif

      'Return
      if ASCCODE=13 then txtobj.KeyReturn

      'Zeicheneingabe
      enable=0

      'Linux chr(127) (Delete) ausschließen
      #ifdef __fb_linux__
        if ASCCODE>=32 and ASCCODE<>127 then enable=1
      #endif

      'Windows
      #ifdef __fb_win32__
        if ASCCODE>=32 then enable=1
      #endif

      if enable then txtobj.KeyAddChar(KEY)

    end if
  end if
  txtobj.printout
loop until ASCCODE=27'Esc drücken

txtobj.SaveText("editierterText.txt")

end
