                              14.

                         .

       뢠     Turbo  Vision,    
   娨  ⠭  ꥪ⮢ Turbo Vision.  
⠭ ꥪ ᠭ   13.
      ⮩      ⨯,  ⠭,  ६,
楤  㭪樨,  ।   Turbo Vision. 
  룫廊 ⠪:

楤 Sample                                           

       procedure Sample(AParameter);

  㭪        Sample 믮   㭪権
                  ࠬ஬, AParameter.

  . ⠪      㭪 Example


楤 Abstract                                        Objects

    procedure Abstract;

  㭪     맮 ⮩ 楤 蠥  ணࠬ    訡
              ६ 믮 211.    ॠ樨  ࠪ
              ⨯  ꥪ,  ᯮ  맮  Abstract   
              㠫 ⮤,     ४ 
              ஦  ⨯.    ।   ⪨
              ᯮ짮 ஢ ࠪ⭮ ⨯.

  . ⠪   "ࠪ ⮤"   3.


६ Application                                        App

    Application: PApplicaton = nil;

  㭪     ६ Application  ⠭    @Self   
              砫 TProgram.Init (뢠  TApplication.Init)
               頥  nil   TProgram.Done (뢠 
              TApplication.Done). ⮬,      ६  믮
              ணࠬ  Turbo Vision,  Application 㪠뢠  
              ꥪ-ணࠬ.

  . ⠪   TProgram.Init


६ AppPalette                                         App

    AppPalette: Integer = apColor;

  㭪     롨ࠥ     3  㯭   ணࠬ   
              (apColor, apBlackWhite,   apMonochrome).   AppPalette
              樠 TProgram.InitScreen  ᨬ 
              ⥪饣 ०       ࠭            ᯮ
              TProgram.GetPalette   .    
              ४ TProgram.InitScreen,  ⮡   롮
                㬮砭.

  . ⠪   TProgram.InitScreen, ⠭ apXXXX


⠭ apXXXX                                              App

  祭    । ᫥騥 ⠭ :

                         14.1. ⠭ .

     
     ⠭     祭  祭
     
     apColor          0        梥⭮ 
     apBlackWhite     1        LCD 
     apMonochrome     2        ஬ 
     

  㭪     ⠭, 稭騥      ap,   ᯮ  
              㪠,       3  ⠭    㤥
              ࠡ ணࠬ     Turbo  Vision.    
              ᯮ      梥⭮,     ୮-     
              ஬ ᯫ.


楤 AssignDevice                                   TextView

    procedure AssignDevice(var T: Text;
              Screen: PTextDevice);

  㭪     뢠 ⥪⮢  䠩  TTextDevice. AssignDevice
              ࠡ⠥ 筮 ⠭⭮ 楤  Assign  
              ᪫祭 ⮣,     㪠뢠      䠩.
               ⮣,   ⥪⮢    䠩    뢠    
              TTextDevice      Screen  (  Screen  
               4         UserData      TextRec(T).
              ᫥⥫쭮 権  /  ⥪⮢ 䠩
              㤥         TTextDevice,   ᯮ
              㠫 ⮤   StrRead    StrWrite.  ᪮
              TTextDevice   ࠪ  ⨯,  ࠬ   Screen
              筮 㪠뢠      ࠧ   TTerminal,  
              ॠ  㭪樮쭮    
              TTY  ஫.

  . ⠪   TTextDevice; TextRec

⠭ bfXXXX                                          Dialogs

  祭     । 騥 䫠 :

                           14.2.

     
     ⠭     祭  祭
     
     bfNormal        $00     ଠ쭠 
     bfDefault       $01       㬮砭
     bfLeftJust      @02     ⪠  ஢ 
     

  㭪        祭  ।   TButton.Init
               ।     ᮧ   ⨫   .
              bfNormal 㪠뢠     ଠ    㬠稢
              . bfDefault 㪠뢠    㤥 
               㬮砭.  易  ணࠬ,  ᯥ
              ⮡  뫠 ⢥ 㬠稢  
              TGroup. 祭  bfLeftJust      
              bfDefault   bfNormal        
              ⮡ࠦ ⥪  :  ᫨ 饭, 
              ⪠ 業;  ᫨   ⠭,      ⪠
              ࠢ .

  . ⠪   TButton.Flags, TButton.MakeDefault, TButton.Draw


६ ButtonCount                                    Drivers

    ButtonCount: Byte = 0;

  㭪     ButtonCount ࠭ ᫮   誨    0,  ᫨
              誠   ⠫஢.    ᯮ짮 
              ६   ।  㯭     প
              誨. 祭  ⠭    樫樮
               Drivers     .


६ CheckSnow                                      Drivers

    CheckSnow: Boolean;

  㭪     CheckSnow 믮    㭪      䫠
              ⠭⭮   Turbo  Pascal  -  Crt.  ஢ઠ
              ᭥,   뢮  ࠭,  ॡ ⮫쪮
                 ஢ CGA.

  . ⠪   InitVideo


楤 ClearHistory                                   HistList

    procedure ClearHistory;

  㭪       ப   ᯨ᪮ ਨ.


楤 ClearScreen                                     Drivers

    procedure ClearScreen;

  㭪     頥 ࠭.  ClearScreen ।,  砫
               맢    InitVideo.       ।   ॡ
              ᯮ짮   楤,      ᭥   
              ᠭ InitVideo.

  . ⠪   InitVideo


⠭ cmXXXX                                            Views

  㭪      ⠭      ।⠢      ।।
               Turbo   Vision.      ।      
              TEvent.Command ᮡ⨩     evMessage(evCommand      
              evBroadcast)     ⠢    ⮤    HandleEvent
              ⠭ ꥪ⮢ Turbo Vision 믮 ࠧ
              .
              Turbo Vision १ࢨ 祭 ⠭  0  99
                256  999  ᢮ 楫.  ࠡ稪 ᮡ⨩
              ⠭ ꥪ⮢ Turbo Vision  ॠ    
              ।। ⠭.     ࠬ     
              । ᢮ ᮡ⢥ ⠭   
              100   255      1,000   65,535  䫨⮢ 
              ।।묨 .

  祭    騥 ⠭    ।     Turbo
              Vision   ᯮ  ⠭묨  ꥪ⠬ Turbo
              Vision:

               14.3.  ⠭ .


 祭 祭

 cmValid   0     ।    TView.Valid      ஢ન  
                 ᮧ ࠧ殢  ⮢
 cmQuit    1     ⠢ TProgram.HandleEvent  뢠 EndModal
                 (cmQuit),   ணࠬ.  ப  
                       筮  ᮤঠ ,  
                 ॢ kbAltX  cmQuit.
 cmError   2      ࠡ뢠    ꥪ⮬.    
                 ᯮ짮  ।⠢ ॠ 
                 ন .
 cmMenu    3     ⠢ TMenuView.HandleEvent 뢠 ExecView
                   롮 ,   १ 祣 
                   ᣥ஢           
                 PutEvent.
 cmClose   4     ࠡ뢠 TWindow.HandleEvent,   ᫨    
                 InfoPtr    ᮡ  ⠭    nil  
                 㪠뢠    .  ᫨     쭮,   
                 ।⢮  PutEvent    evCommand  
                 祭  cmCancel.  ᫨  쭮,  
                  뢠  ⮤  Close    ᫮  
                 ন ⨥   (ᬮ   䫠   wfClose).
                 ⬥⪠    뢠饩      
                 ᮡ⨥ evCommand  Command   cmClose  InfoPtr,
                  㪠뢠  . ப   
                   筮 ᮤন ,  ॢ
                 kbAltF3  cmClose.
 cmZoom    5     ⠢ TWindow.HandleEvent            뢠
                 TWindow.Zoom,      ᫨           ন
                 ⠡஢ (ᬮ  䫠  wfZoom)  ᫨ 
                 InfoPtr    ᮡ  ⠭    nil  
                 㪠뢠        .    ⬥⪠       
                 ⠡஢    ⬥⪠  
                       ᮡ⨥  evCommand  
                 Command  cmZoom  InfoPtr,   㪠뢠 
                 .  ப           筮
                 ᮤন ,  ॢ kbF5  cmZoom.
 cmResize  6     ⠢ TWindow.HandleEvent            뢠
                 TView.DragView,  ᫨   ন 
                 ࠧ஢ (ᬮ 䫠 wfMove    wfGrow).  ப
                       筮 ᮤন ,
                  ॢ kbCtrlF5  cmResize.
 cmNext    7     ⠢ TDeskTop.HandleEvent ᤢ ᫥
                    ࠭    ।  .  ப
                       筮 ᮤন ,
                  ॢ kbF6  cmNext.

 cmPrev    8     ⠢ TDeskTop.HandleEvent  ᤢ   ࢮ
                    ࠭  ᠬ  . ப
                      筮  ᮤন ,
                  ॢ kbShiftF6  cmPrev.


              騥 ⠭       ᯮ   
              ।          㬮砭    ꥪ⮢
               :

         14.4. ⠭   .


    祭  祭

 cmOK        10      뫠   OK
 cmCancel    11        뫮 ⬥  Cancel,
                     뢠饩   襩 Enter
 cmYes       12      뫠   Yes
 cmNo        13      뫠   No
 cmDefault   14      뫠    㬮砭


                 cmOK,  cmCancel,  cmYes   cmNo
                     TDialog.HandleEvent  
                祭     (뢠   EndModal).
                筮 ᮤন  ࠩ  
              TButton               祭    .
              TDialog.HandleEvent         㤥        ஢
              -ᮡ⨥  cmCancel    ⢥    ᮡ⨥   
               kbEsc.
               cmDefault ⠢  TButton.HandleEvent 
              㬠稢  (. 䫠 bfDefault) ᨬ㫨஢
              ⨥     .     TDialog.HandleEvent     㤥
              ஢  ᮡ⨥    cmDefault   ⢥ 
              ᮡ⨥  kbEnter.
              । ᫥騥    ⠭        
              ᯮ짮 ⠭묨 묨 ⠬:

        14.5. ⠭   ⮢.


         祭    祭

cmReceivedFocus     50  TView.SetState ᯮ  㭪  Message
cmReleasedFocus     51   । ᮡ evBroadcast   
                         祭      ᢮  TView.Owner,  
                        ⮫쪮 sfFocused    .     InfoPtr
                        ᮡ 㪠뢠    ᠬ  .
                         ନ      ࠢ    
                        ,       稫 
                        ᢮ ⨢          
                        ४஢ ᥡ  ᮮ⢥⢥. ꥪ
                        Tlabel, ਬ, ॠ   ,
                          몫 ᢮ ᢥ.
cmCommandSetChanged 52  ⮤ TProgram.Idle       ᮡ⨥
                        evBroadcast    ⮫쪮        㦨
                           ⥪饬   (뢠
                        ⮤ EnableCommands,  DesableCommands 
                        SetCommands    TView).  饥  ᮮ饭
                        cmCommandSetChanged 뫠            
                        HandleEvent         
                        娨 (᫨  ⮫쪮    TView.EventMask
                        ᯥ᪨       ᪨      ᮡ
                        evBroadcast). ᫨         
                         ࠣ      
                        ,         ॠ஢    
                        cmCommandSetChanged ᢮     ᮢ.
                        ꥪ TBut ton,  TMenuView  TStatusLine,
                        ਬ, ॠ           ,
                        ᮢ뢠 ᥡ.
cmScrollBarChanged  53  TScrollBar ᯮ  㭪  Message 
cmScrollBarClicked  54  । ᮡ  evBroadcast      
                           祭    ᢮  TView.Owner,  
                        ⮫쪮 誠 ⬥砥   ஫.
                        InfoPtr   ᮡ   㪠뢠      
                        ஫. 騥    ᮮ饭    ᮧ
                        묨   ࠢ묨    묨    ⠬,
                        ࠢ塞묨 ᮩ ஫, ⠪ 
                        ꥪ TScroller  TListViewer.
cmSelectWindowNum   55  ⠢ TWiondow.HandleEvent    뢠
                        TView.Select, ᫨ InfoInt    ᮡ
                        ᮮ⢥               TWindow.Number.
                        TProgram.HandleEvent  ॠ  ᮡ
                              Alt-1    Alt-9  騬
                        ᮮ饭 cmSelectWindowNum  InfoInt  1
                         9.
cmRecordHistory     60  ⠢ ꥪ   THistory   "뢠"
                        ⥪饥 ᮤন    ꥪ   TInputLine.
                        TButton 뫠      饥       ᮮ饭
                        cmRecordHistory ᢮ ,   
                        ࠭,        १,       ⠢
                        "뢠"      ꥪ   THistory   
                         .


  . ⠪   TView.HandleEvent, TCommandSet


⠭ coXXXX                                          Objects

  㭪     ⠭ coXXXX   ।    ࠬ  Code  
              ⮤ TColection.Error,              TCollection
              㦨 訡  ६ 樨.

  祭    騥 ⠭  訡 ।  
              権 Turbo Vision:

                       14.6.  訡 樨.


  訡  祭  祭

 coIndexError    -1      襫    .  ࠬ  Info
                       ।  ⮤ Error  ᮤন ୮
                       .

 coOverflow      -2    ९ 樨. TCollection.SetLimit
                       筮     ७    樨.
                       ࠬ Info   ।      ⮤   Error
                       訢 ࠧ 樨.


  . ⠪   TCollection


㭪 CStrLen                                           Drivers

    function CStrLen(S: String): Integer;

  㭪     頥  ப  S,    S    ࠢ
              ப, ᯮ   ᨬ   "~"      㪠
              ᨬ ⪮ .  "~" ᪫   
              ப, ᪮         ࠭.
              ਬ,  ப '~B~roccoly', CStrLen 頥
              8.

  . ⠪   MoveCStr


६ CtrlBreakHit                                   Drivers

    CtrlBreakHit: Boolean = False;

  㭪     ࠩ ࠡ⪨  뢠       Turbo
              Vision ᥣ  ⠭   True,   
              Ctrl-Break.   ணࠬ   Turbo Vision
              墠뢠  ॠ஢  Ctrl-Break.  
               饭   ६ ⠭   False.

  . ⠪   SaveCtrlBreak


㭪 CtrlToArrow                                       Drivers

    function CtrlToArrow(KeyCode: Word): Word;

  㭪     ८ࠧ ࠢ騥   WordStar-ᮢ⨬   
                 ᮮ⢥騥      .
              ᫨ 訩    KeyCode  ᮮ⢥   
              祭 ࠢ          ⠡    14.7,
              १⮬ 㤥  ᮮ⢥  ⠭ kbXXXX.
               ⨢ 砥 KeyCode 頥 .

                 14.7. ८ࠧ ࠢ .

     
          Lo(KeyCode)   
     
     Ctrl-A         $01          kbHome
     Ctrl-D         $04          kbRight
     Ctrl-E         $05          kbUp
     Ctrl-F         $06          kbEnd
     Ctrl-G         $07          kbDel
     Ctrl-S         $13          kbLeft
     Ctrl-V         $16          kbIns
     Ctrl-X         $18          kbDown
     


६ CursorLines                                    Drivers

    CursorLines: Word;

  㭪     ⠢ 砫        ப  
                InitVideo.  ଠ ।  㭪  1
              뢠 BIOS $10  ⠭ ⨯ .

  . ⠪   InitVideo,    TView.ShowCursor,    TView.HideCursor,
              TView.BlockCursor, Tview.NormalCursor


६ DeskTop                                            App

    DeskTop: PDeskTop = nil;

  㭪     ࠭ 㪠⥫  TDeskTop ணࠬ. ६
              DeskTop 樠        TProgram.InitDeskTop,
               뢠  TProgram.Init.    
               筮    ⠢    (TGroup.Insert)     
              믮 (TGroup.ExecView)  DeskTop.


楤 DisposeMenu                                       Menus

    procedure DisposeMenu(Menu: PMenu);

  㭪     ᢮   㪠    (    
              ).

  . ⠪    TMenu


楤 DisposeStr                                      Objects

    procedure DisposeStr(P:String);

  㭪     ᢮ ப,  ।     
              㭪樨 NewStr.

  . ⠪   NewStr


⠭ dmXXXX                                            Views

  祭     DragMode । ⠪:

              . 14.1.  ० Drag.

              DragMode Ŀ
             msb           lsb
               dmLimitAll = $F0
             ͻ
             Ѽ
                        dmDragMove = $01
                       dmDragGrow = $02
                  dmLimitLoX = $10
                 dmLimitLoY = $20
                dmLimitHiX = $40
               dmLimitHiY = $80


  㭪      ⠭  ᯮ    ࠬ
              Mode ⮤ TView.DragView.   㪠뢠  ࠧ襭
                   /       ࠧ      
              ஢ ࠬ Limits.
              ⠭ । ⠪:

                 14.8. ⠭ ० Drag.

     
     ⠭    祭
     
     dmDragMove      ६.
     dmDragGrow       ࠧ.
     dmLimitLoX    ஭    
                  室  Limits.
     dmLimitLoY    ஭    
                  室  Limits.
     dmLimitHiX   ࠢ ஭    
                  室  Limits.
     dmLimitHiY    ஭    
                  室  Limits.
     dmLimitAll        
                  室  Limits.
     


楤 DoneEvents                                      Drivers

    procedure DoneEvents;

  㭪     蠥    ᮡ⨩  Turbo  Vision,  ⪫
              ࠡ稪 뢠 誨. 뢠 ⮬᪨
               맮 TApplication.Done.

  . ⠪   TApplication.Done, InitEvents


楤 DoneHistory                                     Drivers

    procedure DoneHistory;

  㭪     ᢮  ਨ, । InitHistory.
              뢠       ⮬᪨              맮
              TApplication.Done.

  . ⠪   楤 InitHistory, TApplication.Done


楤 DoneMemory                                       Memory

    procedure DoneMemory;

  㭪     蠥   Turbo Vision, ᢮ 
              , ।  १  GetBufMem.  뢠
              ⮬᪨  맮 TApplication.Done.

  . ⠪   TApplication.Done, InitMemory


楤 DoneSysError                                    Drivers

    procedure DoneSysError;

  㭪     蠥 ࠡ稪 ⥬ 訡  Turbo  Vision,
              ⠭  뢠 09H, 1BH, 21H, 23H,
              24H   ⠭  ﭨ  Ctrl-Break    DOS.
              뢠       ⮬᪨              맮
              TApplication.Done.


  . ⠪   TApplication.Done, InitSysError


楤 DoneVideo                                       Drivers

    procedure DoneVideo;

  㭪     蠥  ࠭ Turbo Vision, ⠭
              砫 ० ࠭ (StartupMode),   ࠭ 
              ⠭   뢠  ⮬᪨  
	      맮 TApplication.Done.


  . ⠪   TApplication.Done, InitVideo,
              ६ StartupMode


६ DoubleDelay                                    Drivers

    DoubleDelay: Word = 8;

  㭪     । ६  ⥢  (  1/18.2   ᥪ㭤)
                ﬨ    誨   浪 ࠧ
                          ⤥    ⨩.
              ᯮ GetMouseEvent      樨  ᮡ
              Double, ᫨    ந諨    ⮬   ६
              ࢠ.

  . ⠪   TEvent.Double, GetMouseEvent


६ EmsCurHandle                                   Objects

    EmsCurhandle: Word = $FFFF;

  㭪     ন ⥪騩   ࠡ稪    EMS,    ⮡ࠦ
              TEmsStream    㫥   䨧   ࠭   EMS.
              TEmsStream  ண  맮  ८⮡ࠦ
              EMS 窮  ﭨ  EMS.  ᫨    ணࠬ
              ᯮ EMS      㣨    楫,    ⠭
              EmsCurHandle      EmsCurPage         $FFFF    ।
              ᯮ짮 TEmsStream  -     㤥   㦤
              TEmsStream ⠭ ᢮ ⮡ࠦ.

  . ⠪   TEmsStream.Handle


६ EmsCurPage                                     Objects

    EmsCurpage: Word = $FFFF;

  㭪     ন ⥪騩    ᪮   ࠭   EMS,
              ⮡ࠦ TEmsStream  㫥 䨧 ࠭
              EMS.    TEmsStream        ண     맮
              ८⮡ࠦ  EMS  窮  ﭨ EMS.  ᫨
                ணࠬ  ᯮ  EMS    㣨  楫,
              ⠭  EmsCurHandle    EmsCurPage  $FFFF ।
              ᯮ짮  TEmsStream  -    㤥   㦤
              TEmsStream ⠭ ᢮ ⮡ࠦ.


  . ⠪   TEmsStream.Page


⠭ evXXXX                                          Drivers

  㭪              ⨯    ᮡ⨩    
              ࠡ稪 ᮡ⨩ Turbo Vision.  ⠭  evXXXX
              ᯮ  ᪮쪨 :    What 
              ᮡ,     EventMask        
              ६ PositionalEvents  FocusedEvents.

  祭
              騥 祭    䫠    ᮡ⨩    
              ⠭ ⨯ ᮡ⨩:

                     14.9.  ⠭ ᮡ⨩.

     
     ⠭     祭         祭
     
     evMouseDown   $0001    誨 
     evMouseUp     $0002    誨 饭
     evMouseMove   $0004   誠  
     evMouseAuto   $0008   ਮ᪮ ᮡ⨥   , 
                             誨
     evKeyDown     $0010    
     evCommand     $0100   ⨥-
     evBroadcast   $0200   ⨥-饥 ᮮ饭
     

              騥 ⠭        ᯮ짮    
              ᪨஢ ⨯ ᮡ⨩:

                     14.10. ᪨ ⠭ ᮡ⨩.

     
     ⠭     祭         祭
     
     evNothing     $0000    ⨥ 㦥 ࠡ⠭
     evMouse       $000F    ⨥  誨
     evKeyboard    $0010    ⨥  
     evMessage     $FF00    ⨥-ᮮ饭 (, 饥
                            ᮮ饭  । 짮⥫).
     

      ᪨ ᮡ । ⠪:

                   . 14.2. ⮡ࠦ ⮢ ᪨ ᮡ.

       ᮡ Ŀ
     msb                           lsb
       evMessage   = $FF00
                     evKeyboard  = $0010
                      evMouse     = $000F
     ϻ
     Ѽ
                               evMouseDown = $0001
                              evMouseUp   = $0002
                             evMouseMove = $0004
                            evMouseAuto = $0008
                           evKeyDown   = $0010
                    evCommand   = $0100
                   evBroadcast = $0200

              ᪨ ⠭ ᮡ⨩   ᯮ짮 
              ண   ।,   ਭ       ᮡ⨥
              ⭮ ᥬ ᮡ⨩. ਬ,

     if Event.What and evMouse <> 0 then DoMouseEvent;

  . ⠪ TEvent, TView.EventMask, GetKeyEvent, GetMouseEvent,
            ⮤ HandleEvent, PositionalEvents, FocusedEvents.

 FNameStr                                              Objects

    FNameStr = String[79];

  㭪     ப, ᮤঠ  䠩 DOS.


६ FocusedEvents                                    Views

    FocusedEvents: Word = evKeyboard + evCommand;

  㭪     ।    ᮡ⨩        䮪஢
              ᮡ. ६  FocusedEvents  PositionalEvents
              ᯮ TGroup.HandleEvent   ।, 
              ᮮ⭮ ᮡ  ⠬ 㯯. ᫨ 
              ᮡ     ᮤন        FocusedEvents    
              PositionalEvents,       饥
              ᮡ⨥.

  . ⠪   ६ PositionalEvents, TGroup.HandleEvent,
              TEvent, ⠭ evXXXX.


楤 FormatStr                                       Drivers

    procedure FormatStr(var Result: String;
                                  Format: String; var Params);

  㭪     楤 ଠ஢   ப,    ࠡ⠥
               㭪樨 몠   vsprintf.  Format  砥
              ᯥ䨪 ଠ,      Params  ᮤন  ᯨ᮪
              ࠬ஢. FormatStr 믮 ଠ஢ 뢮
              ப  Result.
              ࠬ Format        ᮤঠ      ᫮
              ᯥ䨪஢ ଠ,   ⮡ࠦ ࠬ஢ 
              Params. ଠ ᯥ䨪஢ - %[-][nnn]X, 
              - % 㪠뢠 砫 ᯥ䨪 ଠ;
              - [-]  易⥫  ,  㪠뢠騩,  
              ࠬ 㤥 ஢  ( 㬮砭 ࠬ
               ⮡ࠦ ࠢ ࠢ);
              - [nnn]  -  易⥫     ᯥ䨪
                   0-255  (0 㪠뢠  ⢨
              ,    砥,   뢮    nnn
              ᨬ);
              -  - ᨬ ଠ:
                 - 's' 砥,  ࠬ 㪠뢠  ப;
                 - 'd' 砥  筮  ।⠢  LongInt
                   ࠬ;
                 - 'c'  砥,    訩    ࠬ  -
                   ᨬ;
                 - 'x'  砥  ⭠筮   ।⠢
                   ࠬ LongInt.
                 - '#'⠭  ࠬ  nnn.

              ਬ, ᫨   ࠬ   㪠뢠       ப,
              ᮤঠ   'spiny',  ᫥  ⠡  뢠
              ᯥ䨪   १  :


            14.11.   䨪  ଠ     १.

     
        䨪   
     
        %6s            ' spiny'
        %-6s           'spiny'
        %3s            'iny'
        %-3s           'spi'
        %06s           '0spiny'
        %-06s          'spiny0'
     

              Params -  ⨯஢ var  ࠬ, ᮤঠ騩
              ࠬ  ᮮ⢥騬 ᯥ䨪ࠬ ଠ
               Format.  Params   ᨢ  LongInt 
              㪠⥫      ,  ᮤঠ饩  LongInt  
              㪠⥫.
              ਬ,  뢮 ப ᮮ饭  訡

              Error in file [file name] at line [line number]

                ᫠ ᫥ ப  Format:

              'Error in file %s at line %d'.

              Params   ᮤঠ  㪠⥫    ப 
              䠩  Longint,  ।⠢ ᫮ ப  䠩.
                 ᤥ  ᯮᮡ:  ᨢ 
               .
              騩 ਬ  뢠    ⨯   
              ᢮   ६,      ᮧ   ⨬
              祭, ।  Params  FormatStr.

                 type
                   ErrMsgRec = record
                     FileName: PString;
                     LineNo: Longint;
                   end;

                   ErrMsgArray = array[0..1] of Longint;

                 const
                   TemplateMsg = 'Error in file %s at line %d';

                 var
                   MyFileName: FNameStr;
                   OopsRec: ErrMsgRec;
                   DarnArray: ErrMsgArray;
                   TestStr: String;

                 begin
                   MyFileName := 'WARTHOG.ASM';

                   with OopsRec do
                   begin
                     FileName := @MyFileName;
                     LineTo := 42;
                   end;
                   FormatStr(TestStr, TemplateMsg, OopsRec);
                   Writeln(TestStr);

                   DarnArray[0] := Longint(@MyFileName);
                   DarnArray[1] := 24;
                   FormatStr(TestStr, TemplateMsg, DarnArray);
                   Writeln(TestStr);
                 end;

  . ⠪   㭪 SystemError, ꥪ TParamText.


楤 FreeBufMem                                       Memory

    procedure FreeBufMem(P: Pointer);

  㭪     ᢮ -, 뫠 㪠⥫ .

  . ⠪   GetBufMem, DoneMemory.


㭪 GetAltChar                                        Drivers

    function GetAltChar(KeyCode: Word): Char;

  㭪     頥 ᨬ    Ch,        ண    Alt-Ch
              ࠡ뢠 塠⮢    ᪠-,        
              㬥 KeyCode.      㭪       ⭮
               GetAltCode ⮡ࠦ.

  . ⠪   GetAltCode.


㭪 GetAltCode                                        Drivers

    function GetAltCode(Ch: Char): Word;

  㭪     頥 塠⮢ ᪠-, ᮮ⢥騩
              Alt-Ch.   㭪    ⭮    GetAltChar
              ⮡ࠦ.

  . ⠪   GetAltChar.


楤 GetBufMem                                        Memory

    procedure GetBufMem(var P: Pointer; Size: Word);

  㭪     । -    Size     
              㪠⥫    . ᫨    -
              訢 ࠧ,  ⠭  nil. -
               ⫨砥                  
              (।塞   New,  GetMem  MemAlloc),
                    ࠧ    ᢮
              ஬             ६.   ⥫,
              ।  GetBufMem,  ⠭  㪠⥫  
              -     ( ⮫쪮 ) ४,  
               ६頥  ஬  .  ᫨  
               蠥 ᢮ ,  ⠭ 
              㪠⥫   nil.  -      ᢮
              १  맮  FreeBufMem.  -   
                ।   ࠭⢮      
              HeapPtr  HeapEnd,  , ⠭ 
              㫠  ணࠬ.

              Turbo Vision   ᯮ   -    窨
              ᮤন ꥪ⮢   TGroup   (⠪,      ,
                     ࠭),    ⮫쪮 
              ꥪ   ⠭   䫠   ofBuffered   -   
              ⥫쭮   蠥   ந⥫쭮  権
              ᮢ.

  . ⠪   FreeBuffMem, InitMemory, TGroup.Draw.


楤 GetKeyEvent                                     Drivers

    procedure GetKeyEvent(var Event: TEvent);

  㭪     ஢, 㯭   ᮡ⨥   맮
              뢠 BIOS INT 16H.  ᫨   뫠  ,
              Event.What ⠭           evKeyDown     
              Event.KeyCode ⠭  c-  .  
              ⨢ 砥,    Event.What   ⠭   
              evNothing. GetKeyEvent         뢠          
              TProgram.GetEvent.

  . ⠪ TProgramm.GetEvent, ⠭ evXXXX, TView.HandleEvent.


楤 GetMouseEvent                                   Drivers

    procedure GetMouseEvent(var Event: TEvent);

  㭪     ஢, 㯭    ᮡ⨥   誨  ।
              ᮡ⨩  誨, ন ࠡ稪 ᮡ⨩
              Turbo Vision.   ᫨  ந室  ᮡ⨥    誨,
              Event.What ⠭   evMouseDown, evMouseUp,
              evMouseMove        evMouseAuto;      Event.Buttons
              ⠭   mbLeftButton     mbRightButton;
              Event.Double ⠭  True  False; Event.
              Where ⠭    誨    
              न (ᮮ⢥   न⭮   ⥬
              TApplication). ᫨  ᮡ    誨   㯭,
              Event.What ⠭  evNothing. GetMouseEvent
              뢠  TProgram.GetEvent.

  . ⠪  TProgram.GetEvent, ᮡ evXXXX, ⮤ HandleEvent.


⠭ gfXXXX                                            Views

  㭪         ᯮ      ⠭  
              GrowMode   ꥪ TView   ஦. ,
              ⠭   GrowMode,  ।,    
               㤥   ᨬ    
              ࠧ  .

  祭     GrowMode । :

                        . 14.3.  ० Grow.

              GrowMode Ŀ
             msb           lsb
                       gfGrowAll = $0F
             ϻ
             Ѽ
                    gfGrowLoX = $01
                       gfGrowLoY = $02
       ।    gfGrowHiX = $04
                      gfGrowHiY = $08
                     gfGrowRel = $10


                  14.12.  । 䫠  ० Grow.


 ⠭        祭

 gfGrowLoX    ᫨ ⠭,    ஭   
              㤥 室        ﭨ    ࠢ
              ஭ .
 gfGrowLoY    ᫨ ⠭,   ஭  
              㤥 室        ﭨ    
              ஭ .
 gfGrowHiX    ᫨ ⠭,   ࠢ ஭  
              㤥   室      ﭨ    ࠢ
              ஭ .
 gfGrowHiY    ᫨ ⠭,    ஭  
              㤥 室        ﭨ    
              ஭ .
 gfGrowAll    ᫨ ⠭,     㤥 ᤢ
                ࠢ  㣫  .
 gfGrowRel     ᯮ짮     ꥪ⠬   TWindow,   
              室     ࠭:      㤥
               ࠧ ⭮⥫쭮 ࠧ  . 
              㤥 ࠡ뢠      ᮮ⢥⢥      ࠧ
              ,   ந室  ४祭  
              ० 25  43/50 ப.

              ⨬,   LowX=    ஭;  LowY  = 
              ஭;  HiX = ࠢ ஭; HiY =  ஭.

  . ⠪ TView.GrowMode


⠭ hcXXXX                                            Views

  祭    । ᫥騥 ⠭ ⥪ ᪠:

            14.13. ⠭ ⥪ ᪠.

     
     ⠭    祭  祭
     
     hcNoContext     0    ⥪  
     hcDragging      1    ꥪ - ६頥
     

  㭪     祭 TView.HelpCtx   㬮砭  -  hcNoContext,
              ஥ 㪠뢠,          
              ⥪ ᪠.   TView.GetHelpCtx    頥
              hcDragging,   ⮫쪮      ⠭
              ६頥 (   㪠뢠   ﭨ    䫠
              sfDragging).
              Turbo Vision  १ࢨ    ⥪   ᪠
              祭   0  999.  ணࠬ  ।
              ᢮ ⠭    1,000  65,535.

  . ⠪  TView.HelpCtx, TStatusLine.Update.


楤 HideMouse                                       Drivers

    procedure HideMouse;

  㭪      誨    砫쭮        ᫥   맮
              InitEvents. HideMouse         㢥稢
              ७ "稪    誨"      ࠩ   誨.
              ShowMouse 㤥 㬥  稪    뢠
               誨,  稪 ⠭ ࠢ 0. 
              ࠧ, 맮  HideMouse    ShowMouse    
              묨,  ᥣ   ᡠ஢.

  . ⠪   InitEvents, DoneEvents, ShowMouse


६ HiResScreen                                    Drivers

    HiResScreen: Boolean;

  㭪     ⠭   True      InitVideo,  ᫨
              ࠭ ন ०  43/50  ப  (EGA/VGA);  
              ⨢ 砥 ⠭  False.

  . ⠪   InitVideo


楤 HistoryAdd                                     HistList

    procedure HistoryAdd(Id: Byte; var Str: String);

  㭪      ப Str  ᯨ᮪ ਨ,  㪠뢠 
               Id.


६  HistoryBlock                                 HistList

    HistoryBlock: Pointer = nil;

  㭪     뢠   ,  뢠騩      ਨ   
              ᯮ㥬  ࠭ ப ਨ.  
              । ।⢮    HistorySize.    ⥫
              ⠭   nil            㤥
              ⠭   InitHistory.  祭 
              .

  . ⠪  楤 InitHistory, ६ HistorySize.


㭪 HistoryCount                                     HistList

    function HistoryCount(Id: Byte): Word;

  㭪     頥 ⢮   ப      ᯨ᪥   ਨ,
              ᮮ⢥饥  ID.


६ HistorySize                                   HistList

    HistorySize: Word = 1024;

  㭪      ࠧ          ਨ,     ᯮ㥬
              ஬ ᯨ᪠ ਨ  ࠭ 祭,
                  ப   .      䨪
              ।⢮ InitHistory    ᪥  ணࠬ.  
              㬮砭 ࠧ    ࠢ  1,       
               ।  맮  InitHistory.  祭 
               ᫥ 맮 InitHistory.

  . ⠪   楤 InitHistory, ६ HistoryBlock.


㭪 HistoryStr                                       HistList

   function HistoryStr(Id: Byte; Index: Integer): String;

  㭪     頥 Index    ப        ᯨ᪥    ਨ,
              ᮮ⢥  ID.


६ HistoryUsed                                   HistList

    HistoryUsed: Word = 0;

  㭪     ᯮ   ஬  ᯨ᪠  ਨ
               㪠  ᬥ饭     ਨ.  
              祭  .


楤 InitEvents                                      Drivers

    procedure InitEvents;

  㭪     樠     ᮡ⨩    Turbo    Vision,
               ࠡ稪  뢠  誨    뢠
              . 뢠 ⮬᪨ TApplication.Init.

  . ⠪   DoneEvents.


楤  InitHistory                                   HistList

   InitHistory;

  㭪     뢠           TApplication.Init    
              ।        ,   ᯮ㥬
              ஬ ᯨ᪠  ਨ.    ।
              ६ HistorySize.  ᫥   맮   InitHistory
              ६ HistoryBlock 㪠뢠  砫 .

  . ⠪  TProgram.Init, 楤 DoneHistory.


楤 InitMemory                                       Memory

    procedure InitMemory;

  㭪     樠         Turbo     Vision,
              ⠫ 㭪         HeapError.
              뢠 ⮬᪨ ।⢮ TApplication.Init.

  . ⠪   DoneMemory.


楤 InitSysError                                    Drivers

    procedure InitSysError;

  㭪     樠 ࠡ稪  ⥬   訡   Turbo
              Vision,   ८।      뢠   09H,
              1BH,21H,  23H,  24H   ﭨ  Ctrl-Break  
              DOS.     뢠     ⮬᪨     ।⢮
              TApplication.Init.

  . ⠪   DoneSysError.


楤 InitVideo                                       Drivers

    procedure InitVideo;

  㭪     樠  ࠭ Turbo Vision. ࠭
              ⥪騩 ०  ࠭    StartupMode    ४砥
              ࠭    ०,  㪠  ScreenMode.  ६
              ScreenWidth,  ScreenHeight,  HiResScreen,  CheckSnow,
              ScreenBuffer          CursorLines     ४
              ᮮ⢥⢥.    ࠭       
                  ᯮ짮   SetVideoMode.   InitVideo
              뢠         ⮬᪨          ।⢮
              TApplication.Init.

  . ⠪   DoneVideo, SetVideoMode, smXXXX.


⠭  kbXXXX                                         Drivers

  㭪      ⢠ ⠭, 稭  "kb" 易 
              ன.

  祭    騥 祭  । ﭨ  
                ᯮ짮  ஢થ  ॣ஢ Shift
              , ஥     ᮫
              ᮬ $40:$17. ਬ,

     var
       ShiftState: Byte absolute $40:$17;
       ...
     if ShiftState and kbAltShift <> 0 then AltKeyDown;

      14.14.  ﭨ   ᪨ Shift.


 ⠭     祭    祭

 kbRightShift    $0001   ⠭, ᫨ ࠢ Shift 
 kbLeftShift     $0002   ⠭, ᫨  Shift 
 kbCtrlShift     $0004   ⠭, ᫨ Ctrl 
 kbAltShift      $0008   ⠭, ᫨ Alt 
 kbScrollState   $0010   ⠭, ᫨   ﭨ
                         ScrollLock
 kbNumState      $0020   ⠭, ᫨   ﭨ
                         NumLock
 kbCapsState     $0040   ⠭, ᫨   ﭨ
                         CapsLock
 kbInsState      $0080   ⠭, ᫨   ﭨ
                         InsLock


                  14.15.  Alt-㪢.

     
       ⠭    祭           ⠭    祭
     
       kbAltA       $1E00              kbAltN       $3100
       kbAltB       $3000              kbAltO       $1800
       kbAltC       $2E00              kbAltP       $1900
       kbAltD       $2000              kbAltQ       $1000
       kbAltE       $1200              kbAltR       $1300
       kbAltF       $2100              kbAltS       $1F00
       kbAltG       $2200              kbAltT       $1400
       kbAltH       $2300              kbAltU       $1600
       kbAltI       $1700              kbAltV       $2F00
       kbAltJ       $2400              kbAltW       $1100
       kbAltK       $2500              kbAltX       $2D00
       kbAltL       $2600              kbAltY       $1500
       kbAltM       $3200              kbAltZ       $2C00
     

              14.16.  ᯥ樠 .

     
       ⠭    祭           ⠭    祭
     
       kbAltEqual   $8300              kbEnd        $4F00
       kbAltMinus   $8200              kbEnter      $1C0D
       kbAltSpace   $0200              kbEsc        $011B
       kbBack       $0E08              kbGrayMinus  $4A2D
       kbCtrlBack   $0E7F              kbHome       $4700
       kbCtrlDel    $0600              kbIns        $5200
       kbCtrlEnd    $7500              kbLeft       $4B00
       kbCtrlEnter  $1C0A              kbNoKey      $0000
       kbCtrlHome   $7700              kbPgDn       $5100
       kbCtrlIns    $0400              kbPgUp       $4900
       kbCtrlLeft   $7300              kbrayPlus    $4E2B
       kbCtrlPgDn   $7600              kbRight      $4D00
       kbCtrlPgUp   $8400              kbShiftDel   $0700
       kbCtrlPrtSc  $7200              kbShiftIns   $0500
       kbCtrlRight  $7400              kbShiftTab   $0F00
       kbDel        $5300              kbTab        $0F09
       kbDown       $5000              kbUp         $4800
     

                 14.17.  Alt-᫮.

     
       ⠭    祭           ⠭    祭
     
       kbAlt1       $7800              kbAlt6       $7D00
       kbAlt2       $7900              kbAlt7       $7E00
       kbAlt3       $7A00              kbAlt8       $7F00
       kbAlt4       $7B00              kbAlt9       $8000
       kbAlt5       $7C00              kbAlt0       $8100
     

             14.18.  㭪樮 .

     
       ⠭    祭           ⠭    祭
     
       kbF1         $3B00              kbF6         $4000
       kbF2         $3C00              kbF7         $4100
       kbF3         $3D00              kbF8         $4200
       kbF4         $3E00              kbF9         $4300
       kbF5         $3F00              kbF0         $4400
     

            14.19.   Shift-㭪樮쭠 .

     
       ⠭    祭           ⠭    祭
     
       kbShiftF1    $5400              kbShiftF6    $5900
       kbShiftF2    $5500              kbShiftF7    $5A00
       kbShiftF3    $5600              kbShiftF8    $5B00
       kbShiftF4    $5700              kbShiftF9    $5C00
       kbShiftF5    $5800              kbShiftF0    $5D00
     

            14.20.  Ctrl-㭪樮쭠 .

     
       ⠭    祭           ⠭    祭
     
       kbCtrlF1     $5E00              kbCtrlF6     $6300
       kbCtrlF2     $5F00              kbCtrlF7     $6400
       kbCtrlF3     $6000              kbCtrlF8     $6500
       kbCtrlF4     $6100              kbCtrlF9     $6600
       kbCtrlF5     $6200              kbCtrlF0     $6700
     

             14.21.  Alt-㭪樮쭠 .

     
       ⠭    祭           ⠭    祭
     
       kbAltF1      $6800              kbAltF6      $6D00
       kbAltF2      $6900              kbAltF7      $6E00
       kbAltF3      $6A00              kbAltF8      $6F00
       kbAltF4      $6B00              kbAltF9      $7000
       kbAltF5      $6C00              kbAltF0      $7100
     

  . ⠪   evKeyDown, GetKeyEvent.


㭪 LongDiv                                           Objects

    function LongDiv(X: Longint; Y: Integer): Integer;
              inline($59/$58/$5A/$F7/$F9);

  㭪     㭪  ஥ ᥬ   ண
              ,  楫 祭 X/Y.


㭪 LongMul                                           Objects

    function LongMul(X, Y: Integer): Longint;
              inline($5A/$58/$F7/$EA);

  㭪     㭪  ஥ ᥬ   ண
              㬭,   楫 祭 X*Y.


 LongRec                                               Objects

    LongRec = record
                Lo, Hi: Word;
              end;

  㭪      ⨯   ࠡ⪨ ६ 
              ᫮.


㭪 LowMemory                                          Memory

    function LowMemory: Boolean;

  㭪     頥 True, ᫨  ,  ⨢ 砥
              False. True 砥,   맮 । 
              ⨣ 㫠  .      㫠   
              । ६ LowMemSize.

  . ⠪    6, InitMemory, TView.Valid, LowMemSize.


६ MaxBufMem                                       Memory

    MaxBufMem: Word = 65536 div 16;

  㭪     뢠 ᨬ  ꥬ      16-⮢
              ࠣ,         ।  
              -஢.

  . ⠪   GetBufMem, FreeBufMem.


६ MaxCollectionSize                              Objects

    MaxCollectionSize = 65520 div SizeOf(Pointer);

  㭪     । ᨬ쭮   ᫮   ⮢,  
               ᮤঠ  ,        ᫮
              㪠⥫, ஥ 頥    ᥣ    
              64.


⠭ MaxViewWidth                                      Views

    MaxViewWidth = 132;

  㭪     ⠭ ᨬ   .

  . ⠪    TView.Size.


⠭ mbXXXX                                          Drivers

  㭪      ⠭    ᯮ짮    ஢થ
               TEvent.Buttons  ᮡ evMouse.

              if (Event.What = evMouseDown) and
              (Event.Button = mbLeftButton) then LeftButtonDown;

  祭    । ᫥騥 ⠭:

               14.22. ⠭  誨.

   
   ⠭    祭  祭
   
   mbLeftButton   $01  ⠭, ᫨ 뫠   
   mbRightButton  $02  ⠭, ᫨ 뫠  ࠢ 
   

  . ⠪   GetMouseEvent.


㭪 MemAlloc                                           Memory

    function MemAlloc(Size: Word): Pointer;

  㭪     । Size          頥
              㪠⥫  .  ᫨  ॡ㥬  ࠧ  
                ।,  頥 祭 nil. 
              ⫨稥   ⠭  楤   New      GetMem,
              MemAlloc     ।   .
               ।     MemAlloc    
              ᢮ ⠭⭮ 楤ன FreeMem.

  . ⠪   New, GetMem, Dispose, FreeMem, MemAllocSeg.


㭪 MemAllocSeg                                        Memory

    function MemAllocSeg(Size: Word): Pointer;

  㭪     ।     ஢      ࠭
              ᥣ. ⢥   MemAlloc,     ᪫祭
              ⮣,     ᬥ饭  १饣  祭
              㪠⥫ - 0.

  . ⠪   MemAlloc


६ MenuBar                                            App

    MenuBar: PMenuView = nil;

  㭪     ࠭ 㪠⥫             ணࠬ
              (᫥ TMenuView).       ६       MenuBar
              樠        TProgram.InitMenuBar,
               뢠 १ TProgram.Init.  祭 nil
              㪠뢠,  ணࠬ    .


㭪 Message                                             Views

   function Message(Receiver: PView; What, Command: Word;
                              InfoPtr: Pointer): Pointer;

  㭪     ⠭ ᮡ⨥-    㬥⠬   What,
              Command  InfoPtr,  ⥬,  ᫨ , 뢠
              Receiver^.HandleEvent   ࠡ⪨  ⮣  ᮡ.
              Message 頥 nil, ᫨ Receiver - nil , ᫨
              ᮡ⨥  ࠡ⠭ ᯥ譮.  ᫨ ᮡ⨥  ᯥ譮
              ࠡ⠭ (HandleEvent   頥  Event.What  
              evNothing), 㭪     頥     Event.InfoPtr.
              ᫥     ᯮ짮    ।,
                ⮬ ࠡ⠭  ᮡ⨥.  㬥
              What 筮  ⠭  evBroadcast. ਬ,
               㬮砭 TscrollBar.ScrollDraw 뫠 ᫥饥
              ᮮ饭   ஫ :

            Message(Owner, evBroadcast, cmScrollBarChanged, @Self);

               ᮮ饭    ࠭,      ᮮ⢥騥
                     ⮫쪮  祭
               ஫ .

  . ⠪  TView.HandleEvent, ⨯ TEvent, ⠭ cmXXXX,
             ⠭ evXXXX.


६ MinWinSize                                       Views

    MInWinSize: TPoint = (X: 16; Y: 6);

  㭪     ।    ࠧ   TWindow      
              ⮬. 祭  頥   ࠬ Min 
              맮 TWindow.SizeLimits.            
              MinWinSize   ⢮     ,  ᫨
              ⮫쪮 ⮤ SizeLimits   ४.

  . ⠪   TWindow.SizeLimits


६ MouseButtons                                   Drivers

    MouseButtons: Byte;

  㭪     ন ⥪饥 ﭨ  誨. MouseButtons
              ४  ࠡ稪  뢠  誨   
              ⮫쪮     饭.  ⠭ mbXXXX
                ᯮ짮  ஢ન MouseButtons.

  . ⠪   ⠭ mbXXX.


६ MouseEvents                                    Drivers

    MouseEvents: Boolean = False;

  㭪     ⠭   True,  ᫨ 誠 ⠫஢ 
              㦥 InitEvents;         ⨢     砥,
              ⠭  False. ᫨ False,   楤
              ᮡ⨩  誨 室.

  . ⠪   GetMouseEvent.


६ MouseIntFlag                                   Drivers

    MouseIntFlag: Byte;

  㭪     ᯮ   ࠩ  誨  Turbo  Vision 
              묨 ⠬.   ⠭      ⮫쪮
               ᮡ⨥  誨.


६ MouseWhere                                     Drivers

    MouseWhere: TPoint;

  㭪     ন ⥪      誨        
              न. MouseWhere  ४  ࠡ稪
              뢠 誨      ⮫쪮   誠   ᤢ.
              ᯮ 楤  MakeLocal  ८ࠧ 
               (⭮⥫쭮 ) न⠬. MouseWhere
              ।   ࠡ稪  ᮡ⨩     㣨
              묨 誨.

  . ⠪   GetMouseEvent, ⮤ GetEvent, MakeLocal


楤 MoveBuf                                         Objects

    procedure MoveBuf(var Dest; var Source; Attr: Byte;
                                Count: Word);

  㭪      ⥪            ᯮ짮    
              TView.WriteBuf  TView.WriteLine.  Dest  
              TDrawBuffer (    ᨢ   ᫮)   
              Source       ᨢ   .   Count  
                Source  訥   ᮮ⢥
              ᫮     Dest.    訥       ᫮      Dest
              ⠭  Attr   묨, ᫨
              Attr - 0.

  . ⠪   ⨯ TDrawBuffer, MoveChar, MoveCStr, MoveStr.


楤 MoveChar                                        Objects

    procedure MoveChar(var Dest; C: Char; Attr: Byte;
                                 Count: Word);

  㭪      ᨬ            ᯮ짮  
              TView.WriteBuf  TView.WriteLine.  Dest  
              TDrawBuffer   (      ᨢ  ᫮).
              訥   Count ᫮  Dest ⠭
                      묨,  ᫨  Ord(C)  - 0.
              訥    ᫮  ⠭     Attr   
               묨, ᫨ Attr - 0.


  . ⠪   ⨯ TDrawBuffer, MoveBuf, MoveCStr, MoveStr.


楤 MoveCStr                                        Objects

    procedure MoveCStr(var Dest; Str: String;
                                 Attrs: Word);

  㭪      ப            ᯮ짮   
              TView.WriteBuf  TView.WriteLine.  Dest  
              TDrawBuffer  (      ᨢ   ᫮).
                     Str         訥   
              ᮮ⢥  ᫮    Dest.  訥    ᫮
              ⠭    Lo(Attr)   Hi(Attr).  
              "~"   ப  ᯮ    ४祭  
               ⠬ ਡ, ।묨  ᫮ Attr.

  . ⠪   ⨯ TDrawBuffer, MoveChar, MoveBuf, MoveStr.


楤 MoveStr                                         Objects

    procedure MoveStr(var Dest; Str: String;
                                Attr: Byte);

  㭪      ப            ᯮ짮   
              TView.WriteBuf  TView.WriteLine.  Dest  
              TDrawBuffer   (      ᨢ  ᫮).
                    Str         訥    
              ᮮ⢥  ᫮    Dest.  訥    ᫮
              ⠭  Attr   묨, ᫨
              Attr - 0.

  . ⠪   ⨯ TDrawBuffer, MoveChar, MoveCStr, MoveBuf.


㭪 NewItem                                             Menus

   function NewItem(Name, Param: TMenuStr; KeyCode: Word;
                              Command: Word; AHelpCtx: Word; Next:
                              PMenuItem): PMenuItem;

  㭪     ।  頥 㪠⥫     
              TMenuItem,   ।⠢   (NewStr
              ᯮ  ।  㪠⥫ ப
              Name    Param).  ࠬ  Name   ⮩
              ப  ࠬ  Command      㫥.
              맮 NewItem,  NewLine,  NewMenu  NewSubMenu 
               묨  ᮧ   ॢ    
                ᪠;  ਬ஢ .  2.

  . ⠪   TApplication.InitMenuBar, ⨯ TMenuView, NewLine,
              NewMenu, NewSubMenu.


㭪 NewLine                                             Menus

    function NewLine(Next: PMenuItem): PMenuItem;

  㭪     ।  頥 㪠⥫     
              TMenuItem,  ।⠢  ⤥  ப  
               .

  . ⠪   TApplication.InitMenuBar, ⨯ TMenuView, NewMenu,
              NewSubMenu, NewItem.


㭪 NewMenu                                             Menus

    function NewMenu(Items: PMenuItem): Pmenu;

  㭪     ।  頥 㪠⥫     
              TMenu.  Items  Default   ⠭ 
              祭  ࠬ஬ Items.

  . ⠪   TApplication.InitMenuBar, ⨯ TMenuView, NewLine,
              NewSubMenu, NewItem.


㭪 NewSItem                                          Dialogs

   function NewSItem(Str: String; ANext: PSItem): PSItem;

  㭪     ।   頥  㪠⥫   
              TSItem.   Value  Next   ⠭  
              NewStr(Str)  ANext ᮮ⢥⢥.  㭪 NewSItem
                ⨯ TSItem     ஢
              易 ᯨ᪨ ப;  ਬ .  4.


㭪 NewStatusDef                                        Menus

    function NewStatusDef(AMin, AMax: Word; AItems:
                       PStatusItem; ANext: PStatusDef): PStatusDef;

  㭪     ।   頥  㪠⥫   
              TStatusDef.      樠      묨
              祭ﬨ     ࠬ஢.     맮    NewStatusDef
              NewStatusKey      묨     ᮧ
                ᠭ  ப        
              ᪠;  ਬ஢ .  2.

  . ⠪   TApplication.InitStatusLine, TStatusLine,
              NewStatusKey.


㭪 NewStatusKey                                        Menus

    function NewStatusKey(AText: String; AKeyCode: Word;
                  ACommand: Word; ANext: PStatusItem): PStatusItem;

  㭪     ।   頥  㪠⥫   
              TStatusItem.   樠    祭ﬨ
              ࠬ஢ (NewStr  ᯮ     ।
                㪠⥫ Text).  ᫨ AText  (१⮬
              㤥 nil   Text),     뢠,
               㤥 ᯥ稢, , ⮡ࠦ  
              KeyCode  Command.

  . ⠪   TApplication.InitStatusLine, TStatusLine,
              NewStatusDef.


㭪 NewStr                                            Objects

    function NewStr(S: String): PString;

  㭪     㭪 ᪮ ப. ᫨ S - 㫥, NewStr
              頥 nil;   ⨢  砥,  ।
              Length(S)+1 ,  ᮤঠ騥   S  頥
              㪠⥫   .
              ப ᮧ      NewStr      
              ᢮   DisposeStr.

  . ⠪   DisposeStr.


㭪 NewSubMenu                                          Menus

    function NewSubMenu(Name: TmenuStr; AHelpCtx: Word;
                       SubMenu: PMenu; Next: PMenuItem): PMenuItem;

  㭪     ।  頥 㪠⥫     
              TMenuItem,      ।⠢    (NewStr
              ᯮ  ।  㪠⥫ Name).

  . ⠪   TApplication.InitMenuBar,TMenuView, NewLine, NewItem.


⠭ ofXXXX                                            Views

  㭪
                 ᯮ    뫮    ⮢
              樨  TView.Options.  ⠭ 樨  
              1 㪠뢠,          ⤥
              ਡ; ⪠  ⮢   樨   砥,   
              ਡ ⪫祭  饭. ਬ,

              MyWindow.Options := ofTileable + ofSelectable;

  祭    । ᫥騥 樨 䫠:

                    14.23. 樨 䫠.


 ⠭      祭

 ofSelectable   ⠭,  ᫨      롨ࠥ  ᥡ
                ⮬᪨   (.    sfSelectable),    ਬ,
                ⬥⪮ 誮     襩 Tab
                  .
 ofTopSelect    ⠭,  ᫨    頥 ।
                ᥬ 㣨 ࠢ묨 묨 ⠬,  
                ࠭.     ofTopSelect  ⠭,  맮
                TView.Select ᮮ⢥  맮 TView.MakeFirst.
                 (TWindow      ⮬)   㬮砭 
                    ⠭,       ⠢    
                ᯮ ।  ᥬ 㣨   
                ࠭,         롨.    .    ⠪
                TView.Select, TGroup.MakeFirst.
 ofFirstClick   ᫨ 饭,  ⬥⪠  誮,      롨ࠥ
                 ,   䥪. ᫨ ⠭,
                ⠪ ⬥⪠ 誮  㤥  ࠡ    
                ⬥⪠ 誮  ᫥ 롮  .  
                 䥪, ᫨ ofSelectable  ⠭. .
                ⠪ TView.HandleEvent, sfSelect, ofSelectable.
 ofFramed       ⠭, ᫨          ࠬ.
                TWindow      ⮬    TFrame,    ᢮
                ᫥ .     
                ᥡ, TFrame    ࠬ     㣮
                ,  ண ⠭  ofFrame. .
                ⠪ TFrame, TWindow.
 ofPreProcess   ⠭, ᫨    砥 ⨢
                ᮡ   ⮣,      뫨 ᫠ ⨢
                .   ⨢  砥  饭.  .  ⠪
                sfFocused, ofPostProcess, TGroup.Phase.
 ofPostProcess  ⠭, ᫨    砥 ⨢
                ᮡ⨥   砥,   ⨢   
                 ࠡ.   ⨢ 砥  頥.  .
                ⠪ sfFocused, ofPreProcess, TGroup.Phase.
 ofBuffered     ᯮ ⮫쪮         ꥪ⮢     TGroup.
                ⠭, ᫨  -  । 㯭
                .  㯯 ᮤন ࠧ ࠭  ᥩ
                㯯, ⠪     ࠧ    㢥稢    ᪮
                ᮢ.    ⢨  ,  TGroup.Grow
                뢠 ⮤    DrawView. ᫨
                ᫥⢨ New      GetMem       
                筮 ,   㯯  ᢮
                . . ⠪ GetBufMem.
 ofTileable     ⠭, ᫨    ࠭   ᯮ
                     ९楩  (   ᪠).
                筮 ᯮ ⮫쪮  ꥪ⠬ TWindow.
 ofCenterX      ⠭, ᫨     業  
                   ᢮      ⠢    㯯 
                ᯮ짮 TGroup.Insert.
 ofCenterY      ⠭, ᫨     業  
                 Y  ᢮      ⠢    㯯 
                ᯮ짮 TGroup.Insert.
 ofCentered     ⠭, ᫨     業  
                  ᢮   ⠢   㯯 
                ᯮ짮 TGroup.Insert.


      Options ।:

                          . 14.4.  ⮢ Options.

     TView.Options Ŀ
    msb                           lsb
                  ofCentered    = $0300
    ͻ
    Ѽ
                ofSelectable  = $0001
                         ofTopSelect   = $0002
    ।         ofFirstClick  = $0004
                        ofFramed      = $0008
                       ofPreProcess  = $0010
                      ofPostProcess = $0020
                     ofBuffered    = $0040
                    ofTileable    = $0080
                   ofCenterX     = $0100
                  ofCenterY     = $0200

  . ⠪  TView.Options.


 PChar                                                 Objects

    PChar = ^Char;

  㭪     । 㪠⥫  ᨬ.


६ PositionalEvents                                 Views

    PositionalEvents:Word = evMouse;

  㭪     ।    ᮡ⨩      樮஢
              ᮡ. ६ FocusedEvents   PositionalEvents
              ᯮ TGroup.HandleEvent,   ⮡   ⠭
              ᮮ⢥⢨ ᮡ ⠬ 㯯.  ᫨ 
              ᮡ       ਭ     FocusedEvents     
              PositionalEvents,       饥
              ᮡ⨥.

  . ⠪   TGroup.HandleEvent, ⨯ TEvent, ⠭ ᮡ
              evXXXX, ६ Focused Events.


楤 PrintStr                                        Drivers

    procedure PrintStr(S: String);

  㭪     ⠥ ப S  ࠭,  ᯮ 맮 㭪樨
              DOS 40H     ⠭⭮  ன⢮  뢮
              DOS.       䥪,      Write  (S),  
              ᪫祭 ⮣,        PrintStr        ॡ
              ।஢     ணࠬ   ⥪   ६
              믮 䠩 /뢮.


 PString                                               Objects

    PString = ^String;

  㭪     । 㪠⥫  ப.


 PtrRec                                                Objects

    PtrRec = record
                Ofs, Seg: Word;
              end;

  㭪     , ᮤঠ  祭  ᥣ      ᬥ饭
              㪠⥫.


楤 RegisterDialogs                                 Dialogs

    procedure RegisterDialogs;

  㭪     뢠 RegisterType    ⠭⭮  ⨯
              ꥪ, ।   TDialog, TInputLine,
              TButton, TCluster,    TRadioButtons,     TCheckBoxes,
              TListBox, TStaticText,  TParamText, TLabel, THistory.
                ᯮ짮   ꥪ   ⮪
              /.

  . ⠪   TStreamRec, RegisterTypes.


楤 RegisterType                                    Objects

    procedure RegisterType(var S: TStreamRec);

  㭪      ꥪ Turbo Vision    ॣ஢
              । ᯮ짮   ⮪ /.  ⠭ ⨯
              ꥪ⮢ 㦥   ॣ஢        ObjTypes    
              १ࢨ஢  0..99. RegisterType ᮧ
                易 ᯨ᪥ ᥩ TStreamRec.

  . ⠪   TStream.Get, TStreamPut, TStreamRec.


६ RepeatDelay                                    Drivers

    RepeatDelay = 8;

  㭪     । ᫮   ⮢   ६   (1/18.2  
              ᥪ㭤), ஥         ⭮    ।
              樥 ᮡ⨩  evMouseAuto.  ६  ࢠ
               ᮡﬨ evMouseAuto  ᥣ  ⠢  
              .

  . ⠪   DoubleDelay, GetMouseEvent, ⠭ evXXXX.


६ SaveCtrlBreak                                  Drivers

    SaveCtrlBreak: Boolean = False;

  㭪     楤 InitSysError ࠭ ﭨ Ctrl-Break
              DOS, ஢      ६   ।  饭
              ஢ન Ctrl-Break DOS. DoneSysError ⠭
              Ctrl-Break DOS, ஢ 祭, ࠭  ⮩
              ६.

  . ⠪   InitSysError, DoneSysError


⠭ sbXXXX                                            Views

  㭪
               ⠭     ।     ࠧ    
              TScrollBar,   ਭ ⬥⪠ 誮.

              㭪 TScrollBar.ScrollStep            ⢫
              ८ࠧ     ⠭       ⢨⥫
              祭 蠣  ஫.         ।,
              ⠭ sbIndicator         ।   
              TScrollBar.ScrollStep.

                    14.24. ⠭  ஫.

     
      ⠭  祭  祭
     
     sbLeftArrow    0       ५ ਧ⠫쭮 
                           ஫.
     sbRightArrow   1      ࠢ ५ ਧ⠫쭮 
                           ஫.
     sbPageLeft     2       ࠭筠  ਧ⠫쭮
                            ஫.
     sbPageRight    3      ࠢ ࠭筠  ਧ⠫쭮
                            ஫.
     sbUpArrow      4      ५  ⨪쭮 
                           ஫.
     sbDownArrow    5      ५  ⨪쭮 
                           ஫.
     sbPageUp       6       ࠭筠  ⨪쭮
                            ஫.
     sbPageDown     7       ࠭筠  ⨪쭮
                            ஫.
     sbIndicator    8         ஫.
     

                          . 14.5.  ஫.


                                             sbUpArrow
                                           
                                             sbPageUp
                                           
                     sbIndicator  
                                          
                                          
                                          
                                            sbPageDown
                                          
                                          
                                            sbDownArrow
     
                                      
                                      
           sbPageLeft  sbPageRight      
 sbLeftArrow                       sbRightArrow


     騥 祭           ।        㭪
TWindow.StandardScrollBar:


                    14.25. ⠭ StandardScrollBar.

     
      ⠭        祭  祭
     
     sbHorizontal      $0000    ஫ ਧ⠫쭠.
     sbVertical        $0001    ஫ ⨪쭠.
     sbHandleKeyboard  $0002    ஫ ॠ 
                                .
     

  . ⠪  TScrollBar, TScrollBar.TScrollStep.


६  ScreenBuffer                                  Drivers

    ScreenBuffer: Pointer;

  㭪     ⥫   ࠭.

  . ⠪   InitVideo.


६ ScreenHeight                                   Drivers

    ScreenHeight: Byte;

  㭪     ⠭ InitVideo    SetVideoMode    
              ࠭  ப  ⥪饣 ࠭.

  . ⠪   InitVideo, SetVideoMode, ScreenWidth.


६ ScreenMode                                     Drivers

    ScreenMode: Word;

  㭪     ࠭ ⥪騩 ०. 砫쭮 ⠭
              樠樮     Drivers,  ScreenMode
                     ᯮ짮  SetVideoMode.
              祭 ScreenMode      筮       ⠭
              ᯮ짮  ० ࠭ smXXXX.


  . ⠪   InitVideo, SetVideoMode, smXXXX.


६ ScreenWidth                                    Drivers

    ScreenWidth: Byte;

  㭪     ⠭ InitVideo     ਭ  ࠭  (᫮
              ᨬ  ப).

  . ⠪   InitVideo.


 SelectMode                                              Views

   SelectMode = (NormalSelect, EnterSelect, LeaveSelect);

  㭪     ᯮ ७ Turbo Vision.

  . ⠪   TGroup.ExecView, TGroup.SetCurrent.


楤 SetVideoMode                                    Drivers

    procedure SetVideoMode(Mode: Word);

  㭪     ⠭ ०.  Mode        ⠭
              smCO80, smBW80   smMono  易⥫쭢 smFont8x8
                롮 43  50-筮 ० EGA
               VGA.    SetVideoMode   樠   
              ६  InitVideo (  ᪫祭  ६
              StartupMode,             ).
              SetVideoMode 筮   뢠  .  
              ⮣ ᯮ TApplication.SetScreenMode, 
              ⠪ ⠭  ணࠬ.

  . ⠪   InitVideo, ⠭ smXXXX,
              TApplication.SetScreenMode.


⠭ sfXXXX                                            Views

  㭪      ⠭    ᯮ        㯠     
              ᮮ⢥騬 ⠬        TView.State.   
              TView.State        ;
               ⮣            ᯮ짮    ⮤
              TView.SetState.

  祭    । ᫥騥 䫠 ﭨ:

               14.26. ⠭ 䫠 ﭨ.


 ⠭    祭

 sfVisible    ⠭,  ᫨           ᢮
              .     㬮砭  sfVisible.
              ⮤ TView.Show    TView.Hide  ᯮ짮
               䨪樨  sfVisible.    sfVisible   
                易⥫쭮   ࠭, ᪮ 
                 .   ஢ન  
               ࠭,   ஢    sfExposed    맮
              㭪 TView.Exposed.
 sfCursorVis  ⠭, ᫨      ,  
              ⨢ 砥 饭.   㬮砭 饭. ⮤
              TView.ShowCursor          TView.HideCursor     
              ᯮ짮  䨪樨 sfCursorVis.
 sfCursorIns  ⠭, ᫨     - ᯫ譮
              ,  饭, ᫨    - .
                 㬮砭  饭.  ⮤  TView.BlockCursor  
              TView.NormalCursor        ᯮ짮     
              䨪樨 sfCursorIns.
 sfShadow     ⠭, ᫨         ⥭,   
              ⨢ 砥, 饭.
 sfActive     ⠭, ᫨      ⨢  
                ⨢ .
 sfSelected   ⠭, ᫨             ⥪騩
              ࠭    ᢮ . 
              ꥪ TGroup   Current,  ஥  㪠뢠
               ⥪騩   ࠭     (  nil,  ᫨
              ⮢   ࠭).      ⮫쪮  
              ࠭   TGroup.
 sfFocused    ⠭, ᫨       䮪஢.
                 - 䮪஢,  ᫨  ࠭ 
                     ⠪  ࠭,  ..  ᫨
                  室      楯   ࠧ
              㪠⥫ﬨ Current       TGroup,    稭    
              TApplication (ᠬ   孨         
              娨     ⮢).   ᫥   
               楯    筮   祭      
              䮪஢ ᮡ⨩.
 sfDragging   ⠭, ᫨    , 
              ⨢ 砥, 饭.
 sfDisabled   ⠭, ᫨     饭;  饭,
              ᫨ ࠧ襭.
 sfModal      ⠭, ᫨    - . ᥣ
               筮    믮塞   Turbo
              Vision ணࠬ,  筮,  ꥪ TAppplication 
              TDialog.     稭  믮
              (१ 맮    ExecView),         
              ⠭ .         
              ।⠢ 設    (७)   ⨢   ॢ
              ᮡ⨩,  ᮡ  ࠢ       
                 맢    ⮤ EndModal.   ६ ⮣
              "쭮" 横 ᮡ⨩ ᮡ  । 
              ⠬   ॢ  ⮢.  
                     ⮢   ।   
              ॢ,    쭮  . .
              ⠪    sfSelected,    sfFocused,    TView.SetState,
              TView.HandleEvent, TGroup.ExecView.
 sfExposed    ⠭, ᫨        אַ   
              ᢥ     -    ꥪ    TApplication   
              ᫥⥫쭮        ࠭.  ⮤
              TView.Exposed ᯮ     䫠    祭
              (), ।     
              ⢨⥫쭮          ࠭.    .    ⠪
              TView.Exposed.


  祭     䫠 ﭨ । ⠪:

              . 14.6.  䫠 ﭨ.


       TView.State Flags Ŀ
      msb                           lsb
      ͻ
      Ѽ
                            sfVisible   = $0001
                           sfCursorVis = $0002
                          sfCursorIns = $0004
                         sfShadow    = $0008
                        sfActive    = $0010
                       sfSelected  = $0020
                      sfFocused   = $0040
                     sfDragging  = $0080
                    sfDisabled  = $0100
                   sfModal     = $0200
                sfExposed   = $0800

  . ⠪  TView.State.


६ ShadowAttr                                       Views

    ShadowAttr: Byte = $80;

  㭪      ६   ࠢ   梥⮬  ⥭,  㯭
               ⠬    ⠭  ⮬  sfShadow.
                   筮    ࠧ०       ,
              ⮡ࠦ אַ    ࠥ       
               3-D.

  . ⠪   ShadowSize.


६ ShadowSize                                       Views

    ShadowSize: TPoint = (X: 2; Y: 1);

  㭪      祭 ࠢ ࠧ஬ ⥭,  㯭
                ⠭  ⮬  sfShadow.      筮
              ࠧ०    ,  ⮡ࠦ  אַ  
              ࠥ     3-D.  㬮砭,
              ࠧ ⥭ - 2   X  1  Y.
              TProgram.InitScreen 樠  ShadowSize:  ᫨
              ० ࠭ ࠢ smMono, ShadowSize ⠭
               (0,  0).  ShadowSize ⠭  (2, 1),
              ᫨ ⮫쪮      ⠭   smFont8x8   (43-  
              50- ०),   ⮬ 砥 ⠭  
              (1, 1).


  . ⠪   TProgram.InitScreen, ShadowAttr.


६ ShowMarkers                                    Drivers

    ShowMarkers: Boolean;

  㭪     ᯮ    㪠         
              ࠧ    ⨢  ⮢  ࠢ.
              TProgram.InitScreen ⠭ ShowMarkers  True,
              ᫨ ஬  ०,    False.  
              祭   ⠭,  室, 
              梥⭮  ୮- ०.

  . ⠪   TProgram.InitScreen, ६ SpecialChars.


楤 ShowMouse                                       Drivers

    procedure ShowMouse;

  㭪     ShowMouse 㬥蠥 "稪 "   ࠩ
              誨       誨    ᫨ 稪
              ࠢ 0.

  . ⠪   InitEvents, DoneEvents, HideMouse.


⠭ smXXXX                                          Drivers

  㭪      ᪨     ⠭     ᯮ    
              SetVideoMode  ⠭  ᮮ⢥饣 祭
              ०  ScreenMode.

  祭     Turbo Vision । ᫥騥 ० ࠭:

               14.27. ⠭ ० ࠭.

     
     ⠭ 祭 祭
     
     smBW80      $0002  ୮- ०  梥⭮
     smCO80      $0003  ⭮ ०
     smMono      $0007  ஬ ०
     smFont8x8   $0100  43-  50- ०
     

  . ⠪  SetVideoMode, ScreenMode.


६ SpecialChars                                     Views

    SpecialChars: array[0..5] of Char = (#175, #174,
                            #26, #27, ' ', ' ');

  㭪     । ᨬ      ᯮ㥬    
              ᢥ⪨ ⨢      ஬
              ०.     ᨬ    ⮡ࠦ,     ᫨
              ६ ShowMarkers - True.

  . ⠪   ६ ShowMarkers.


⠭ stXXXX                                          Objects

  㭪        ⠭ 稭    "st",
               ᯮ ⮪ Turbo Vision.

  祭    騥 ⠭ ० ᯮ  TDosStream 
              TBufStream  । ० 㯠  䠩 
              ⨨ 䠩  ⮪ Turbo Vision:

               14.28.  㯠  ⮪.

     
     ⠭  祭  祭
     
     stCreate     $3C00     䠩
     stOpenRead   $3D00    䠩 ⮫쪮  ⥭
     stOpenWrite  $3D01    䠩 ⮫쪮  
     stOpen       $3D02    䠩  ⥭/
     

              騥 祭   TStream.Error  
              TStream.ErrorInfo,   訡 ⮪:

               14.29.  訡 ⮪.

     
     ⠭  祭  祭
     
     stOk            0    訡
     stError        -1   訡 㯠
     stInitError    -2    樠஢ ⮪
     stReadError    -3   ⥭  殬 ⮪
     stWriteError   -4     ⮪
     stGetError     -5   Get  ॣ஢ ⨯ ꥪ
     stPutError     -6   Put  ॣ஢ ⨯ ꥪ
     

  . ⠪  TStream.


६  StartupMode                                   Drivers

    StartupMode: Word;

  㭪     ணࠬ InitVideo ࠭ ⥪騩 ०  ࠭ 
              ⮩ ६      ४祭    ०  ࠭
                 ScreenMode.   DoneVideo   ⠭
              ० ࠭  祭   StartupMode.

  . ⠪   InitVideo, DoneVideo, ScreenMode.


६ StatusLine                                         App

    StatusLine: PStatusLine = nil;

  㭪     ࠭ 㪠⥫    ப     ணࠬ.
              ६ StatusLine        樠       
              TProgram.InitStatusLine, 뢠  TProgram.Init.
              祭 nil  㪠뢠,     ணࠬ  ப
              .

  . ⠪   InitStatusLine.


६ StreamError                                    Objects

    StreamError: Pointer = nil;

  㭪     ᫨   nil,  StreamError  㪠뢠    楤,
               뢠   ⮤   Error    ⮪    
               訡. 楤   쭥 
              ᯮ짮 var ࠬ ⨯  TStream,  ..  
              :

              procedure MyStreamErrorProc(var S: TStream); far;

              StreamError     쭮  ४  
              ࠡ 訡  ⮪.  ⮡     ࠡ
              訡    ।  ⨯  ⮪,    
              ४ ⮤ Error ⮣ ⮪.


६  SysColorAttr                                  Drivers

    SysColorAttr: Word = $4E4F;

  㭪        㬮砭  ᯮ  뢮 ᮮ饭
               訡   ࠡ稪   ⥬   訡.    
              ஬ ⥬  SysMonoAttr ᯮ 
              SysColorAttr. 饭  訡  樥 ⬥/
              ⠭ ⮡ࠦ         ப    .
              । ப           ࠭      
              ⠭,  ᫮ ࠧ襭.

  . ⠪    SystemError, SysMonoAttr.


६ SysErrActive                                   Drivers

    SysErrActive: Boolean = False;

  㭪     뢠, ⨢  ࠡ稪 ⥬  訡  
               .    ⠭       True   १
              InitSysError.

६ SysErrorFunc                                   Drivers


    SysErrorFunc: TSysErrorFunc = SystemError;

  㭪     SysErrorFunc -    㭪  ⥬  訡  ⨯
              TSysErrorFunc. 㭪  ⥬  訡  뢠
                 ᪮  訡  DOS  
              ॡ ᬥ ᪠        
              ᪮. ErrorCode  -    祭   0  15,  
              ।  ⠡  14.30,    Drive  -    
              ன⢠ (0=,  1=  ..)  ᪮ 訡. 
              㬮砭 㭪 ⥬ 訡 -  SystemError.
                 ⠭  ᢮ 㭪 ⥬ 訡,
                 SysErrorFunc.  㭪樨 ⥬ 訡
                ४뢠.

                   14.30.  㭪樨 ⥬ 訡.

     
         訡             祭
     
        0..12          ᪨ 訡 DOS
         13           宩 ࠧ ⠡ । 䠩
         14           訡 㯠  ன
         15            ᬥ ᪠
     

              頥 祭 㭪樨:

                  14.31.  祭, 頥 㭪樥
                                ⥬ 訡.

     
        頥 祭          祭
     
               0               짮⥫ ᨫ 
               1               짮⥫ ᨫ ⬥
     

  . ⠪  㭪 SystemError, ⨯ TSysErrorFunc,
             楤 InitSysError.


६ SysMonoAttr                                    Drivers

    SysMonoAttr: Word = $7070;

  㭪     ਡ    㬮砭   ᯮ       뢮
              ᮮ饭   訡  ࠡ稪 ⥬ 訡.
               梥 ⥬ SysColorAttr  ᯮ 
              SysMonoAttr. 饭   訡  樥 ⬥/
              ⠭   ⮡ࠦ       ப    .
              ।     ப         ࠭    
              ⠭,  ᫮ ࠧ襭.

  . ⠪   SystemError, SysColorAttr.


㭪 SystemError                                       Drivers

    function SystemError(ErrorCode: Integer;
                                   Drive: Byte): Integer;

  㭪     㭪 ⥬ 訡  㬮砭.  ⮡ࠦ
                  ᫥  ᮮ饭    訡    ப
                  ᨬ      祭    ErrorCode,
              ᯮ  ਡ 梥,  ।塞 SysColorAttr
               SysMonoAttr.

                     14.32. 饭 㭪樨 SystemError.

     
       訡                  饭
     
         0          Disk is write-protected in drive X
                    ࠩ X ᪠ 饭  
         1          Critical disk error on drive X
                    ᪠ 訡 ᪠  ࠩ X
         2          Disk is not ready in drive X
                    ࠩ X ᪠  ⮢
         3          Critical disk error on drive X
                    ᪠ 訡 ᪠  ࠩ X
         4          Data integrity error on drive X
                    訡   ࠩ X
         5          Critical disk error on drive X
                    ᪠ 訡 ᪠  ࠩ X
         6          Seek error on drive X
                    訡 樮஢  ࠩ X
         7          Unknown media type in drive X
                     ⨯ ⥫  ࠩ X
         8          Sector not found on drive X
                      ᥪ  ࠩ X
         9          Printer out of paper
                     㬠  ਭ
        10          Write fault on drive X
                    訡   ࠩ X
        11          Read fault on drive X
                    訡 ⥭  ࠩ X
        12          Hardware failure on drive X
                    ⭠ ࠢ  ࠩ X
        13          Bad memory image of FAT detected
                     FAT 㦥  ࠧ 
        14          Device access error
                    訡 㯠  ன
        15          Insert diskette in drive X
                    ⠢ ᪥  ࠩ X
     

  . ⠪  SysColorAttr, SysMonAttr, SysErrorFunc.


 TByteArray                                            Objects

    TByteArray = array[0..32767] of Byte;

  㭪      ᨢ         饣  ᯮ짮  
              ਢ ⨯.

  . ⠪   TStringListMaker.


 TCommandSet                                             Views

    TCommandSet = set of Byte;

  㭪     TCommandSet        ࠭   ந쭮
              ⢠, ᮤঠ饣  256  .    
              믮 ⮥   ஢,   ᮮ⢥  
                ।      ணࠬ
              ࠡ⪨  ᮡ⨩      ⠭ ᪨
              . ਬ,   ⮤   TView:   EnableCommands,
              DisableCommands, GetCommands             SetCommands
              ᯮ 㬥  ⨯   TCommandSet.   ⢮
                         樠஢,
              ᯮ ᨭ⠪ ᪠:

      CurCommandSet: TCommandSet = [0..255] - [cmZoom, cmClose,
                                   cmResize, cmNext];

  . ⠪  cmXXXX, TView.DisableCommands, TView.EnableCommands,
             TView.GetCommands, TView.SetCommands.


 TDrawBuffer                                             Views

    TDrawBuffer = array[0..MaxViewWidth-1] of Word;

  㭪      TDrawBuffer  ᯮ    ஢
               ⮤ Draw ࠧ   ⮢. 筮
                 ਡ ࠭  ଠ ப
               ப  TDrawBuffer,  ⥬ 뢮  ࠭:

          var
            B: TDrawBuffer;
          begin
            MoveChar(B, ' ', GetColor(1), Size.X);
            WriteLine(0, 0, Size.X, Size.Y, B);
          end;

  . ⠪  TView.Draw, MoveBuf, MoveChar, MoveCStr, MoveStr.


 TEvent                                                Drivers

    TEvent = record
                What: Word;
                  case Word of
                    evNothing: ();
                    evMouse: (
                      Buttons: Byte;
                      Double: Boolean;
                      Where: TPoint);
                    evKeyDown: (
                      case Integer of
                        O: (KeyCode: Word);
                        1: (CharCode: Byte);
                    evMessage: (
                      Command: Word;
                      case Word of
                        0: (InfoPtr: Pointer);
                        1: (InfoLong: Longint);
                        2: (InfoWord: Word);
                        3: (InfoInt: Integer);
                        4: (InfoByte: Byte);
                        5: (InfoChar: Char);
              end;

  㭪        ਠ⠬ TEvent ࠥ 㭤⠫
              ஫  ⥣ ࠢ ᮡﬨ  Turbo Vision.
              譨 ᮡ, ⠪  ᮡ    
              誨  ᮡ-, 㥬 ⢨
               ⮢,  ࠭     ।   
               TEvent.

  . ⠪ evXXXX,  HandleEvent ⮤, GetKeyEvent, GetMouseEvent


 TItemList                                             Objects

    TItemList  =  array[0..MaxCollectionSize  -  1]  of
                           Pointer;

  㭪     ᨢ    㪠⥫   ᯮ    ७
              ꥪ⠬ TCollection.


 TMenu                                                   Menus

    TMenu = record
                Items: PMenuItem;
                Default: PMenuItem);
              end;

  㭪      TMenu ।⠢  ஢ ॢ . 
              Items 㪠뢠  ᯨ᮪ TMenuItems     Default
              㪠뢠  㬠稢   ⮣ ᯨ᪠
              ( 롨ࠥ  㬮砭   ⨨  ⮣
              ). ꥪ  TMenuView (⮬ ண 
              TMenuBar   TMenuBox)        Menu,   ஥
              㪠뢠    TMenu.      TMenu   ᮧ  
              㤠   ணࠬ NewMenu  DisposeMenu.


  . ⠪    TMebuView,    TMenuItem,    NewMenu,    DisposeMenu,
               TMenuView.Menu 


 TMenuItem                                               Menus

    TMenuItem = record
                Next: PMenuItem;
                Name: PString;
                Command: Word;
                Disabled: Boolean;
                KeyCode: Word;
                HelpCtx: Word;
                case Integer of
                  0: (Param: PString);
                  1: (SubMenu: PMenu);
                end;
              end;

  㭪      TMenuItem  ।⠢    ,   
                       ⮬,        
              ப-ࠧ⥫. Next  㪠뢠     ᫥騩
              TMenuItem   ᯨ᪥  ⮢  ,   ࠢ nil,
              ᫨  ᫥ . Name 㪠뢠  ப,
              ᮤঠ         ࠢ nil,  ᫨
                  ப-ࠧ⥫.  Command
              ᮤন ᮡ⨥-        (.        ⠭
              cmXXXX) 㥬  롮 ⮢   0,
              ᫨    ।⠢  .  Disable  -
              True,  ᫨   饭, False,  ⨢
              砥.  KeyCode ᮤন  ᪠-  祩  
              易   ⮬   0,  ᫨  
                 祩  .  HelpCtx  ᮤন  
              ⥪⭮   ᪠         (祭
              hcNoContext 㪠뢠,          
              ⥪⭮   ᪠).   ᫨   -   
               , Param ᮤন 㪠⥫  ࠬ
              ப  (⮡ࠦ  ࠢ    TMenuBox)
               nil, ᫨    ࠬ ப. ᫨
                 -   ,  Submenu  㪠뢠  
                 .      TMenuItem   ᮧ
              ᯮ짮 㭪権 NewItem, NewLine  NewSubmenu.

  . ⠪    TMenu, TMebuView, NewItem, NewLine, NewSubMenu


 TMenuStr                                                Menus

    TMenuStr = string[31];

  㭪      ப,   ᯮ㥬   NewItem     NewSubMenu.
              ᨬ ࠧ        -  31
              ᨬ.

  . ⠪   NewItem, NewSubMenu


 TPalette                                                Views

    TPalette = String;

  㭪      ப,  ᯮ㥬    Turbo
              Vision.

  . ⠪   GetPalette ⮤


 TScrollChars                                            Views

    TScrollChars = array[0..4] of Char;

  㭪     ᨢ, ।⠢騩   ᨬ,   ᯮ㥬  
              ᮢ TScrollBar.

  . ⠪   TScrollBar


 TSItem                                                Dialogs

    TSItem = record
                Value: PString;
                Next: PSItem;
              end;

  㭪       TSItem ᯥ稢 吝  ᯨ᮪ 
              PString.  ᯨ᪨     
              ணࠬ  Turbo Vision,    ॡ  
               権  ப (.  TCluster,  ਬ).
              㭪 NewSItem ।祭   ᥩ
               ᯨ᮪ TSItem.


 TStatusDef                                              Menus

    TStatusDef = record
                Next: PStatusDef;
                Min, Max: Word;
                Items: PStatusItem;
              end;

  㭪      TStatusDef   ।⠢   ।    ப
              .   Next 㪠뢠  ᫥騩 TStatusDef
               ᯨ᪥ ப   nil,  ᫨    ᫥
              ப .   Min      Max  ।  
              ⥪ ᪠,    ᮮ⢥   ப
              . Items  㪠뢠   ᯨ᮪ ⮢ ப
                nil, ᫨  ப   ⮢.
              ꥪ TStatusLine (ப )    㪠⥫
                 ᯨ᮪   ᥩ   TStatusDef     㤥  ᥣ
              ⮡ࠦ  ப ,  ன ⥪
              ⥪⭠ ᪠ 室    Min
                 Max.   ணࠬ   Turbo   Vision   ⮬᪨
              ४      ப       ,       뢠
              TStatusLine.Update         TProgram.Idle.    
              TStatusDef    ᮧ    ᯮ짮     㭪樨
              NewStatusDef.

  . ⠪   TStatusLine, TProgram.Idle, 㭪 NewStatusDef


 TStatusItem                                             Menus

    TStatusITEm = record
                Next: PStatusItem;
                Text: PString;
                KeyCode: Word;
                Command: Word;
              end;

  㭪      TStatusItem  ।⠢  ப ,
                   .  Next 㪠뢠
               ᫥騩  TStatusItem    ᯨ᪥ ⮢ ப
                nil,  ᫨   ᫥  .  Text
              㪠뢠    ப,  ᮤঠ    
               (⠪    'Alt-X  Exit')    nil,   ᫨
                    (  ⠪  砥  
              㦨 ⮫쪮    ।   祩   ).
              KeyCode ᮤন ᪠- 祩  易 
              ⮬    0,  ᫨      
               祩      .      Command     ᮤন
              -ᮡ⨥ (.  ⠭  cmXXX)  㥬
               롮  .
              㭪  TStatusItem   ⮫쪮    ।
              㠫樨  ப ,   ⠪ ᯮ
               ।    祩    ,        
              ⮬᪨ ⮡ࠦ  . ⮤ TProgram.
              GetEvent 뢠  TStatusLine.HandleEvent    
              ᮡ⨩ evKeyDown.  TStatusLine.HandleEvent ᪠
              ⥪ ப   , ᮤঠ騥 
                  ,   ᫨          ,  
              ८ࠧ  ᮡ⨥ evKeyDown  ᮡ⨥ evCommand
               祭 Command   TStatusItem.
               TStatusItem ᮧ  ᯮ짮  㭪樨
              NewStatusKey.


  . ⠪   TStatusLine, NewStatusKey, TStatusLine.HandleEvent


 TStreamRec                                            Objects

    TStreamRec = ^TStreamRec;
                TStreamRec = record
                  ObjType: Word;
                  VmLink: Word;
                  Load: Pointer;
                  Store: Pointer;
                  Next: Word;
                end;

  㭪      ꥪ Turbo Vision    ॣ஢
              TStreamRec,   㧪  ࠭  ꥪ
              TStream. ணࠬ RegisterTypes  ॣ ⨯
              ꥪ  TStreamRec.

                ॣ樮  ⮪ ।:

                  14.33.   ⮪.

     
           ন
     
     ObjType    ᫮ 䨪  ⨯ ꥪ
     VmtLine    ⨯ ꥪ  ⮬ VMT
     Load      ⥫  ࠪ Load ꥪ⭮ ⨯
     Store     ⥫  ⮤ Store ꥪ⭮ ⨯
     Next      ⥫  ᫥ TStreamRec
     

              Turbo Vision  १ࢨ  祭   䨪஢
              ꥪ ⨯      0      999    ७
              ᯮ짮. ணࠬ     ।   ᢮
              祭    1,000  65,535.
               ᮣ襭,  tStreamRec    ⨯  ꥪ  Txxxx
              뢠 Rxxxx.   ਬ,   TStreamRec    ⨯
              TCalculator 뢠 RCalculator,      
              ᫥饬 :

              type
                TCalculator = object(TDialog)
                  constructor Load(var S: TStream);
                  procedure Store(var S: TStream);
                  ...
                end;

              const
                RCalculator: TStreamRec = (
                  ObjType: 2099;
                  VmtLink: Ofs(TypeOf(TCalculator)^);
                  Load: @TCalculator.Load;
                  Store: @TCalculator.Store);

              begin
                RegisterType(RCalculator);
                ...
              end;

  . ⠪   RegisterType


 TStrIndex                                             Objects

    TStrIndex = array[0..9999] of TStrIndexRec;

  㭪     ᯮ ७ TStringList  TStrListmaker.


 TStrIndexRec                                          Objects

    TStrIndexRec = record
                Key, Count, Offset: Word;
              end;

  㭪     ᯮ ७ TStringList  TStrListmaker.



 TSysErrorFunc                                         Drivers

    TSysErrorFunc  =  function(ErrorCode: Integer; Drive:
                                         Byte): Integer;

  㭪     । ⨯      㭪   ࠡ稪  ⥬
              訡.

  . ⠪   SysErrorFunc, SystemError, InitSysError, DoneSysError


 TTerminalBuffer                                      TextView

    TTerminalBuffer = array[0..65519] of Char;

  㭪     ᯮ ७ TTerminal.

  . ⠪   TTerminal



 TTitleStr                                               Views

    TTitleStr = string[80];

  㭪     ᯮ        ப   ⥪   
               .

  . ⠪   TWindow.Title


 TVideoBuf                                               Views

    TVideoBuf = array[0..3999] of Word;

  㭪     ᯮ   ஢.

  . ⠪   TGroup.Buffer


 TWordArray                                            Objects

    TWordArray = array[0..16383] of Word;

  㭪      ᨢ ᫮  饣 ᯮ짮.


⠭ wfXXXX                                            Views

  㭪        ।     Flags ꥪ⮢
              TWindow. ᫨    ⠭,    㤥  
              ᮮ⢥騥 ਡ:      ६,
               ࠧ, 뢠  ⠡஢.

  祭      । ⠪:

                   TWindow.Flags 
                                 
                  msb           lsb
                  ͻ
                  Ѽ
                        wfMove  = $01
                             wfGrow  = $02
               ।  wfClose = $04
                            wfZoom  = $08

                14.34. ⠭ 䫠 .


 ⠭ 祭 祭

 wfMove    $01     ६
 wfGrow    $02     ࠧ  ᮮ⢥饩
                    ࠢ 㣫
 wfClose   $04      뢠 
 wfZoom    $08       ⠡஢


              ᫨ ⤥       ⠭,   ᮮ⢥
               砥,    ⨢  砥,  
               饭.

  . ⠪  TWindows.Flags


⠭a wnNoNumber                                        Views

    wnNoNumber = 0;

  㭪     ᫨   TWindow.Number ᮤন  ⠭, 
              㪠뢠,          
               ࠭ १ Alt-.  ᫨  Number 
              1   9,    ⮡ࠦ  롮  Alt-
              㯥.

  . ⠪   TWindow.Number


 WordRec                                               Objects

    WordRec = record
                Lo, Hi: Byte;
              end;

  㭪     ⨫⭠ ,       襬  
              襬  ᫮.

  . ⠪   LongRec


⠭ wpXXXX                                            Views

  㭪
               ⠭  ।     ⠭   梥,
              ࠦ  祭.   㬮砭,  ꥪ TWindow
                 wpBlueWindow.    㬮砭,   ꥪ
              TDialog   wpGrayWindow.


  祭     ⠭   ।:

               14.35. ⠭  .

     
     ⠭      祭 祭
     
     wpBlueWindow   0          㡮
     wpCuanWindow   1          
     wpGrayWindow   2          ஬
     

  . ⠪  TWindow.Palette, TWindow.GetPalette
