TOMJ@csdserver3.csd.scarolina.edu (Thomas E. Jenkins, Jr.) (06/01/91)
Hi,
I decided to play with TV today to learn some of it's concepts. Every
time I do this I gain a better feel for it. I have come across a problem I
can not sovle though. The fustrating problem is that I've done it before!
Be low is the main code for a file viewing TV app I wrote. From the Window
menu, the user should be able to select Cascade and Tile. For some reason
though, TApp seems to ignore the commands. I thought that unless a window's
flags were marked otherwise, it could be tiled. Anyway, it does reach the
code ( as a break point showed me ), but does not tile. Does anyone see the
problem?
tom
PROGRAM TVTest ;
USES
StdDlg ,
App ,
Objects ,
Dialogs ,
Menus ,
Drivers ,
Views ,
Memory ,
MsgBox ,
HistList ,
FileWindow ,
DOS ;
TYPE
TTEJApp = OBJECT ( TApplication )
PROCEDURE InitMenuBar ; VIRTUAL ;
PROCEDURE InitStatusLine ; VIRTUAL ;
PROCEDURE HandleEvent ( VAR event : TEvent ) ;
VIRTUAL ;
PROCEDURE TileError ;
VIRTUAL ;
END ; { TTEJApp }
VAR
windowNumber : WORD ;
PROCEDURE OpenFile ;
VAR
fWindow : PFileWindow ;
fDialog : PFileDialog ;
control : WORD ;
fileName : PathStr ;
r : TRect ;
BEGIN { OpenFile }
fDialog := New ( PFileDialog ,
Init ( '*.DOC' ,
'File viewer selection' ,
'Select file' ,
fdOkButton + fdOpenButton ,
1 ) ) ;
control := deskTop^.ExecView ( fDialog ) ;
IF ( control <> cmCancel )
THEN
BEGIN
Inc ( windowNumber ) ;
fDialog^.GetFileName ( fileName ) ;
r.Assign ( 20 , 5 , 60 , 15 ) ;
fWindow := New ( PFileWindow ,
Init ( r ,
fileName ,
windowNumber ) ) ;
deskTop^.Insert ( fWindow ) ;
END ; { THEN }
END ; { OpenFile }
PROCEDURE TTEJApp.InitMenuBar ;
VAR
r : TRect ;
BEGIN { TTEJApp.InitMenuBar }
GetExtent ( r ) ; { Get current screen size }
r.b.y := ( r.a.y + 1 ) ; { Set to one line from top }
MenuBar := New ( PMenuBar , Init ( r , NewMenu (
NewSubMenu ( '~F~ile' , hcNoContext , NewMenu (
NewItem ( '~O~pen' , 'F3' , kbF3 , cmFileOpen , hcNoContext ,
NewItem ( '~C~lose' , 'Alt-F3' , kbAltF3 , cmClose , hcNoContext ,
NewLine (
NewItem ( 'E~x~it' , 'ALT-X' , kbAltX , cmQuit , hcNoContext ,
NIL ) ) ) ) ) ,
NewSubMenu ( '~W~indow' , hcNoContext , NewMenu (
NewItem ( '~N~ext' , 'F6' , kbF6 , cmNext , hcNoContext ,
NewItem ( '~Z~oom' , 'F5' , kbF5 , cmZoom , hcNoContext ,
NewLine (
NewItem ( '~C~ascade' , '' , kbNoKey , cmCascade , hcNoContext ,
NewItem ( '~T~ile' , '' , kbNoKey , cmTile , hcNoContext ,
NIL ) ) ) ) ) ) ,
NIL ) ) )
) ) ;
END ; { TTEJApp.InitMenuBar }
PROCEDURE TTEJApp.InitStatusLine ;
VAR
r : TRect ;
BEGIN { TTEJApp.InitStatusLine }
GetExtent ( r ) ; { Get screen size }
r.a.y := r.b.y - 1 ; { Set to one line from }
{ Screen size }
statusLine := New ( PStatusLine , Init ( r ,
NewStatusDef ( 0 , $FFFF , { Set context help ranges}
NewStatusKey ( '~Alt-X~ Exit' , kbAltX , cmQuit ,
NewStatusKey ( '~F3~ Open' , kbF3 , cmFileOpen ,
NewStatusKey ( '~Alt-F3~ Close' , kbAltF3 , cmClose ,
NewStatusKey ( '~F10~ Menu' , kbF10 , cmMenu ,
NIL ) ) ) ) ,
NIL ) ) ) ;
END ; { TTEJApp.InitStatusLine }
PROCEDURE TTEJApp.HandleEvent ( VAR event : TEvent ) ;
VAR
r : TRect ;
BEGIN { TTEJApp.HandleEvent }
TApplication.HandleEvent ( event ) ;
IF ( event.what = evcommand )
THEN
BEGIN
CASE event.command
OF
cmFileOpen :
OpenFile ;
cmCascade :
BEGIN
deskTop^.GetExtent ( r ) ;
deskTop^.Cascade ( r ) ;
END ; { cmCascade }
cmTile :
BEGIN
deskTop^.GetExtent ( r ) ;
deskTop^.Tile ( r ) ;
END ; { cmTile }
ELSE
END ; { CASE }
ClearEvent ( event ) ;
END ; { THEN }
END ; { TTEJApp.HandleEvent }
PROCEDURE TTEJApp.TileError ;
VAR
dialog : PDialog ;
r : TRect ;
BEGIN { TTEJApp.TileError }
r.Assign ( 30 , 7 , 50 , 13 ) ;
dialog := New ( PDialog , Init ( r , 'Tiling error!' ) ) ;
deskTop^.ExecView ( dialog ) ;
END ; { TTEJApp.TileError }
VAR
ap : TTEJApp ;
BEGIN
windowNumber := 0 ;
ap.Init ;
ap.Run ;
ap.Done ;
END .
tom
+--------------------------------------------------------------------------+
| Thomas E. Jenkins, Jr. Programmer, University of South Carolina CSD |
+--------------------------------------------------------------------------+
| BITNET : C0361@UNIVSCVM.BITNET | CSDNET : tomj/csdserver3 |
| INTERNET : TOMJ@csdserver3.csd.scarolina.EDU {PREFERRED} |
| : C0361@univscvm.csd.scarolina.EDU | 129.252.43.30 |
+--------------------------------------------------------------------------+