freebasic-examples/src/tuibox.fb.bas

124 lines
2.3 KiB
QBasic

namespace tui
type window
declare constructor _
( _
new_x as integer = 1, new_y as integer = 1, _
new_w as integer = 20, new_h as integer = 5, _
new_title as string = "" _
)
declare destructor( )
declare sub show( )
'' Title property
declare property title as string
declare property title( new_title as string )
'' Position properties
declare property x as integer
declare property x( new_x as integer )
declare property y as integer
declare property y( new_y as integer )
private:
declare sub redraw( )
declare sub remove( )
declare sub drawtitle( )
dim as string mytitle
dim as integer posx, posy, sizew, sizeh
end type
constructor window _
( _
new_x as integer, new_y as integer, _
new_w as integer, new_h as integer, _
new_title as string _
)
this.posx = new_x
this.posy = new_y
this.sizew = new_w
this.sizeh = new_h
this.mytitle = new_title
if( len( this.mytitle ) = 0 ) then
this.mytitle = "untitled"
end if
end constructor
destructor window( )
color 7, 0
cls
end destructor
property window.title( ) as string
return this.mytitle
end property
property window.title( new_title as string )
this.mytitle = new_title
this.drawtitle( )
end property
property window.x( ) as integer
return this.posx
end property
property window.x( new_x as integer )
this.remove( )
this.posx = new_x
this.redraw( )
end property
property window.y( ) as integer
return this.posy
end property
property window.y( new_y as integer )
this.remove( )
this.posy = new_y
this.redraw( )
end property
sub window.show( )
this.redraw( )
end sub
sub window.drawtitle( )
locate this.posy, this.posx
color 15, 1
print space( this.sizew );
locate this.posy, this.posx + (this.sizew \ 2) - (len( this.mytitle ) \ 2)
print this.mytitle;
end sub
sub window.remove( )
color 0, 0
var spaces = space( this.sizew )
for i as integer = this.posy to this.posy + this.sizeh - 1
locate i, this.posx
print spaces;
next
end sub
sub window.redraw( )
this.drawtitle( )
color 8, 7
var spaces = space( this.sizew )
for i as integer = this.posy + 1 to this.posy + this.sizeh - 1
locate i, this.posx
print spaces;
next
end sub
end namespace
dim win1 as tui.window = tui.window( 3, 5, 50, 15, "Flashcards" )
Cls
'win1.title = "Window 1"
win1.show( )
sleep