Displaying Multi-Line Text

by - StPendl StPendl Apr 19, 2010

  • Every now and then one needs to display text of multiple lines, which the user should not be able to change.
  • Using one STATICTEXT control for each line is cumbersome, but the STATICTEXT control is a multi-line control with automatic text wrapping, which most are not aware of.

  • The following are some ways to display text.

Using a Static Text Control

  • This allows the user to read the text, but he can not select and copy anything.

 ' turn main window off 
nomainwin

' specify text to display
Message$ = "The world is turning"; CHR$(13); _
"till it gets stuck"; CHR$(13); _
"in the mud of the population."

' set up the GUI
statictext #m.txt, Message$, 10, 10, 200, 100

' open the window
open "Multi-Line Message Demo" for window as #m

' trap closing the window, this line is mandatory
#m "trapclose [quit]"

' wait for user action
wait

[quit]
' close the window and terminate
close #m
end

Using a Text Box with Scroll-Bar

  • This allows the user to read the text and he can select and copy anything.
  • You can display a whole plain text file in a small space.

 ' turn main window off 
nomainwin

' specify text to display
filedialog "Open a Plain Text File ...", "*.txt;*.bas", FileName$

' no file selected then terminate
if FileName$ = "" then end

' read the text
open FileName$ for input as #f
Message$ = input$(#f, lof(#f))
close #f

' set up the GUI
textbox #m.txt, 10, 10, 200, 100

' add a scroll bar for vertical scrolling and make it the control read-only
' remove automatic horizontal scrolling
stylebits #m.txt, _WS_VSCROLL or _ES_READONLY, _ES_AUTOHSCROLL, 0, 0

' open the window
open "Multi-Line Message Demo" for window as #m

' trap closing the window, this line is mandatory
#m "trapclose [quit]"

' fill the text box
#m.txt Message$

' wait for user action
wait

[quit]
' close the window and terminate
close #m
end