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 | +--------------------------------------------------------------------------+