[comp.lang.pascal] TV problem.

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