Code
Global crtOut.s
Global crtWdt, crtRows, crtHgt, crtMs
crtWdt = 300
crtRows = 25
crtHgt = 20
crtMs = 25
#CRT = 1
Global Dim crtId(crtRows)
Procedure openCRT(p)
Shared crtId()
flags = #PB_Window_ScreenCentered | #PB_Window_BorderLess
OpenWindow(#CRT, 0, 0, crtWdt, crtRows * crtHgt, "OUTPUT", flags)
StickyWindow(#CRT, 1)
SetWindowColor(#CRT, RGB(0, 0, 0))
;If createGadgetList(WindowID(#CRT))
font = LoadFont(#PB_Any, "courier new", 12, #PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(font))
flags = #PB_String_ReadOnly ! #PB_String_BorderLess
For i = 0 To crtRows - 1
crtId(i) = StringGadget(#PB_Any, 0, crtHgt * i, crtWdt, crtHgt, "", flags)
SetGadgetColor(crtId(i), #PB_Gadget_FrontColor, RGB(64, 255, 64))
SetGadgetColor(crtId(i), #PB_Gadget_BackColor, RGB(0, 0, 0))
Next i
;EndIf
Repeat
WindowEvent()
Until crtOut = "close"
CloseWindow(#CRT)
EndProcedure
Procedure crtList(line.s)
Shared crtId()
crtOut = line
For id = 0 To crtRows - 2
SetGadgetText(crtId(id), GetGadgetText(crtId(id + 1)))
Next id
If crtOut = #CR$
SetGadgetText(crtId(id), "")
ProcedureReturn
EndIf
For col = 1 To Len(crtOut)
txt.s = Left(crtOut, col)
SetGadgetText(crtId(id), txt + "_")
; setGadgetText(crtId(id), txt + chr(449))
Delay(crtMs)
WindowEvent()
Next col
;remove cursor
Delay(crtMs * 10)
SetGadgetText(crtId(id), crtOut)
EndProcedure
flags = #PB_Window_SystemMenu ! #PB_Window_Minimize
OpenWindow(0, 0, 0, 300, 20, "MAIN WINDOW", flags)
;open output screen
CreateThread(@openCRT(), 0)
Delay(25)
;output messages
For i = 1 To 19
crtList(Right("0000" + Str(i), 4) + Mid(" asjka dk2 61 xyz dff dg", 1 , Random(24)))
If (i % 10) = 0
crtList(#CR$)
EndIf
Next i
crtList(#CR$)
crtList("STOP")
Repeat
Until WindowEvent() = #PB_Event_CloseWindow
crtOut = "close"
end