                              2.

                   TURBO VISION.

     ,   㢨  룫 ணࠬ  Turbo Vision,
  ᭠㦨, , ⭮,   ᢮ ணࠬ. 
⮩   믮 ,  稭  ࠩ ⮩ ணࠬ  
 訥  ࠣ     蠣 ⠪,  ⮡ 뫮
    ࠣ.
     ⭮           ᮢ.   
ࠡ  ?          ?    
ࠨ     ணࠬ?  ᫨   Turbo Vision 뫠 筮
⥪ ६ 믮,  ᪮॥ ᥣ  ⠫   ᬮ
室 , ⮡   ⢥.
      Turbo  Vision  㦥  ࠡ  ணࠬ.  訩   ᯮᮡ
⢥      Turbo Vision -  ஡ 
.   㢨,   樠஢  
.


                ࢠ ணࠬ  Turbo Vision.

     ணࠬ Turbo Vision ᥣ 稭  ᮧ 
ꥪ, ஦    TApplication.    ᫥饬  ਬ  
ᮧ ஦  TApplication ⨯   TMyApp   㤥
४뢠 ⮤   TApplication.      ⨯    ᮧ
 MyApp.

     ਬ砭:   ⮩      㤥  뫠  
MyApp.      ᮡ⢥ ணࠬ  Turbo Vision,  ,
⭮,   - ,   ᮮ⢥⢨    祭
⮩ ணࠬ.    ᯮ㥬  MyApp,  ᪮  ,  祬
᪠ "  ꥪ,  ஦    TApplication".   (
ணࠬ  ⮫쪮 1 ꥪ TApplication.)
     稭  ᫥饣 ਬ,   ᮧ ணࠬ.  
⮣, ⮡  ਢ  ⨭  ணࠬ    ࠧ,    㤥
 ⮫쪮 塞  塞   ⥪.  ᫨ 
ᮧ ᠬ  ணࠬ,    襥 ।⠢,
         㭪樮쭮.    ⠪   
४㥬  ஡ ஢ ਬ.

     ਬ砭:  ⠤  ᮧ ਬ஢ ।⠢
 襬 ਡ⨢ ᪥.   䠩 㪠   
ਬ஢      ᮮ⢥  ,      
program.

       TVGUID01.PAS (  ணࠬ   Turbo Vision)
룫廊 :

     program TFirst;

     uses App;

     type
       TMyApp = object(TApplication)
       end;

     var
       MyApp: TMyApp;

     begin
       MyApp.Init;
       MyApp.Run;
       MyApp.Done;
     end.

     ⨬,              㭪権  
TMyApp. 筮         ꥪ
⨯    ⮤.     ६  MyApp,
  ⨯ TApplication.  ᪮  㤥  
,  㤥  ணࠬ  Turbo Vision,   ⠭
TMyApp     ७.   㬮砭 TApplication ᮧ
࠭,    㭪 2.1.


            . 2.1. ࠭ TApplication  㬮砭.

          Ŀ
                                                
          Ĵ
          
          
          
          
          
          
          Ĵ
            Alt-X Exit                          
          

      ணࠬ  ⮫쪮 :   ॠ    Alt-X  
蠥 ணࠬ.  ⮡     - ,   ॡ
 ⥫   ப    /    
.  ᫥饬 ࠧ  ᤥ .


            ࠭,    ப .

     ᯮ㥬 ꥪ:  TView,  TMenuView,  TMenuBar, TMenuBox,
TStatusLine, TGroup, TDeskTop.
      ࠭,    ப   TFirst ᮧ
⮤ InitDeskTop, InitMenuBar  InitStatusLine  TApplication.
 3 ⮤ 뢠  TApplication.Init      㦭
뢠  .  ⮣ ⮤ Init 襩 ணࠬ 㤥
뢠 TApplication.Init  ࢮ ப. ਬ

               procedure TMyApp.Init;
               begin
                 TApplication.Init;
                 {  樠樨  襩 ணࠬ }
               end;

     ⨬,   室     㫨  Turbo
Vision         uses   襩  ணࠬ.    ⮣,  ⮡
ᯮ짮 , ப   । ⠭ ,
 室  ஬  App  ᯮ짮 Objects,  Menus  Drivers.
(ꥪ   㫨 ᠭ   12.)
     ᫨    ணࠬ      ॡ   -  ᯥ樠쭮
樠樨,    ᯮ  㭠᫥  ⮤  Init.
᪮ Init   ⮤ InitDeskTop,  InitMenuBar  InitStatusLine
㠫, 맮 㭠᫥  Init  뢠  ᮮ⢥騥
⮤ InitStatusLine  InitMenuBar.  㢨   TVGUID02.PAS.
     InitDeskTop, InitMenuBar      InitStatusLine    ⠭
孠祭    ६  DeskTop,  MenuBar    StatusLine
ᮮ⢥⢥.  ᬮਬ   .


                           ࠭.

      ࠭ -  ᪫⥫쭮  ꥪ,   ॡ
   祭    ⢨.           ४뢠
㭠᫥ ⮤ 樠樨.   TApplication.InitDeskTop
ࠡ뢠 .  DeskTop  ਭ   MyApp         MyApp
⠭       ⢥   짮⥫,
     짮⥫   DeskTop. 
࠭   ࠢ 묨 .


                          ப .

     TApplication.InitStatusLine ⠭       
TStatusLine,  뢠  StatusLine    ।    ⮡ࠦ
 .  StatusLine 뢮, 稭    ࠭
        ப ࠭,   ॡ㥬  ⮢
ப ,  ᢮  㣨  ⮢. TStatusLine
뢠 稥        ᠬ   
⬥祭 誮.

     ਬ砭: 稥  -  樨  ,  
     ப .

     TVGUID02.PAS ᮧ      ப      ,      ४뢠
TApplication.InitStatusLine:

procedure TMyApp.InitStatusLine;
var R: TRect;                 { ࠭ ࠭ ப  }
begin
  GetExtent(R);               { ⠭ R  न ᥣ}
                              { ࠭ }
  R.A.Y := R.B.Y - 1;         { । 設  1 ப }
                              {   }
  StatusLine := New(PStatusLine, Init(R,   { ᮧ ப }
                                           {  }
    NewStatusDef(0, $FFFF,  { ⠭  ⥪⭮ }
                            { Help }
      NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit, { ।
                                                      }
      NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose,  { 㣮 }
      nil)),           {    }
    nil)               {   । }
  ));
end;

     ਬ砭:   

     procedure InitStatusLine; virtual;

       TMyApp.

     樠 -      ᫥⥫쭮    맮
⠭ 権  Turbo  Vision  NewStatusDef,   NewStatusKey   
NewStatusBar (⠫쭮  ᠭ     14).  TVGUID02 ।
ப    ⮡ࠦ    ⥪⭮  ࠢ筮
ଠ樨   0   $FFFF  뢠 ⠭  cmQuit 
襩 Alt-X,   ⠭  cmClose   襩  Alt-F3.
( Turbo Vision -  ⠭.  䨪 稭
 cm.)
        ,      ⫨稥    TMyApp.Init,  ⮤
InitStatusLine   뢠  ⮤,        ४뢠   -
TApplication.InitStatusLine. 稭    :        ணࠬ
⠭ ப   ,      墠뢠   
 ⥪⭮  ࠢ筮  ⥬        
६.  TApplication.InitStatusLine  祣,  
 TMyApp.InitStatusLine  믮  ࠡ    ,  ஬
⮣,   ६     맮.
     ᫥ ப, 뢮  ப  ⮩ 樠樨
- "Alt-F3  Close".    ப,   祭      "~",   㤥
ᢥ稢  ࠭.  짮⥫  ⬥ 誮 
 ப  ⨢樨 .
       믮 TVGUID02,  ,   
Alt-F3  ᢥ祭  ⬥⪠   誮      䥪.  
ந室 ⮬,     cmClose  㬮砭 饭,  
,   饭 , ⠪  饭.
᫥ ⮣,    ஥ ,  cmClose    
⨢஢.
      ப      ࠡ⠥   ࠧ  ᫥  樠樨
StatusLine, ᪮     ᯮ   ⮫쪮   ।।
 (cmQuit    cmClose.)  StatusLine    ࠡ뢠 
짮⥫  襣 ⥫⢠.


                        .

     ⨬,     cmQuit  cmClose,    易 
⠬ ப ,   ⠭묨    Turbo
Vision, ⮬     ॡ । .   ⮣,  ⮡
ᯮ짮 ᮡ⢥ ,     
 ⠭  祭.  ਬ,      । 
, ⮡   :

     const
       cmNewWin = 199;

     ਬ砭: Turbo  Vision  १ࢨ  ⠭ 
ᮡ⢥ . . "। "   5.

     ⥬   易     祩  襩    
⮬ ப .

     StatusLine := New(PStatusLine, Init(R,
       NewStatusDef(0, $FFFF,
         NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit,
         NewStatusKey('~F4~ New', kbF4, cmNewWin, { 祭 
                                                     }
         NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose,
         nil))),
       nil)
     ));

     ⠪ 樠樨  ப  -  襥 
 樠 ,   ᫮.


                            .

     ६     MenuBar  樠  묨
맮 ⠭  㭪権  NewMenu,   NewSubMenu,   NewItem   
NewLine.
     ᫥ ⮣,       樠   ,      ࠡ
祭.       ࠡ  짮⥫ 
襩 .
     樠㥬               ⮬,
ᮤঠ饬  롮:

        File 
        Ŀ
        Open F3
        ٱ
       
       


     const
       cmFileOpen = 200; { ।   }
     procedure TMyApp.InitMenuBar;
     var R: TRect;
     begin
       GetExtent(R);
       R.B.Y := R.A.Y + 1;
       MenuBar := New(PMenuBar, Init(R, NewMenu( { ᮧ  
                                                    }
         NewSubMenu('~F~ile', hcNoContext, NewMenu(    { ।
                                                          }
           NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
                                                     {  }
           nil)),          {   ⮢ }
         nil)              {    }
       )));                {   }
     end;

     , ᮧ ⨬ , 뢠 'File'   
뢠 'Open'.  "~"  F ᨬ ⪮   'File',
 O - ᨬ ⪮  'Open';   F3  ⠭
    'Open'.
           Turbo   Vision         
⥪⭮ ᪠,  易    .    
ॠ ⥪⭮-ਥ஢ ࠢ ⥬    襩
ணࠬ.     㬮砭             ⥪
hcNoContext -  ᯥ樠 ⥪,    ⥪騩
⥪.   ⥪⮢ ᪠   樠樨
 ,  ᪮ -        ꥪ⮢
      㤥  㤭.    ⮢ 
⥪  ᪠      ,      ⠢  ᢮
祭  hcNoContext   Init.
     ⮡   ன        'File',     
뢠  㭪 NewItem:

        File 
        Ŀ
        Open F3
          New  F4       
        ٱ
       
       

     MenuBar := New(PMenuBar, Init(R, NewMenu(
       NewSubMenu('~F~ile', hcNoContext, NewMenu(
         NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
         NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext,
         nil))),
       nil)
     )));

     ⮡   ஥  ,    뢠   㭪
NewSubMenu:

      File   Window
     Ŀ
     Next F6
       Zoom F5      
     ٱ
     
     

     MenuBar := New(PMenuBar, Init(hcNoContext, NewMenu(
       NewSubMenu('~F~ile', hcNoContext, NewMenu(
         NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
         NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext,
         nil))),
       NewSubMenu('~W~indow', hcNoContext, NewMenu(
         NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext,
         NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext,
         nil)),
       nil)))      { 뢠 ᪮   }
     )));

      易 2 ⠭  Turbo Vision cmNext   cmZoom
 ⠬   稬 蠬.
     ⮡  ਧ⠫     롮ࠬ    ,
⠢ 맮 NewLine  맮 NewItem:

        File  Window
        Ŀ
        Open F3
          New  F4       
        ٱ
          Exit  Alt-X   
        ٱ
       
       

     { 室  TVGUID03.PAS }
     MenuBar := New(PMenuBar, Init(hcNoContext, NewMenu(
       NewSubMenu('~F~ile', hcNoContext, NewMenu(
         NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
         NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext,
         NewLine(
         NewItem('E~x~it', 'Alt-X', kbAltX, cmNewWin, hcNoContext,
         nil))))),
       NewSubMenu('~W~indow', hcNoContext, NewMenu(
         NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext,
         NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext,
         nil))),
       nil))
     )));

       ,   TVGUID03.PAS  襬 ᪥ ⠪
     ப , 뢠  F10
  cmMenu.  cmMenu -  ⠭⭠  Turbo  Vision,
   짮⥫ ᯮ짮    誨.
 ⮬ 砥  F10 ⨢  ,   
   , ᯮ  .
       ⠪  ,        
ப  ⢥ ⥪    祣    ࠭.
  ।। 짮⥫,   F10 㤥  ⨢஢
, ,  ᪮॥  ᥣ,    㪠뢠   誮.
⬥   ࠧ  㤮.


                      砭  .

          㯥   ,   設⢮  
饭,   cmNewWin  cmFileOpen   믮 
⢨.
     ᫨  ࢮ砫쭠 ॠ -   ࠧ஢,  ⮣
  ,   ᤥ !   ⢨⥫쭮,  뫨
   ⨦ ணࠬ஢ ࠢ塞 ᮡﬨ:
  ⤥  㭪樨  祭     㭪権 ⪫  
.
     ࠤ樮 孨 ணࠬ஢  ॡ  饭  
ᠭ         ..    
 ⮣:   稫 祭 ⥬,   , 
஢ .  ,      ॡ  -     
᪮쪮 ணࠬ,    ॠ     .    
ᤥ  ᫥饬 ࠧ.
     窠 ணࠬ   Turbo   Vision    ᫥騩  蠣  
ࠢ  ࠤ樮  ணࠬ஢.    ⮫쪮
ࠧ    㭪樮,   ᯮ㥬 , 
         ,    ᨬ묨      
塞묨.
      ணࠬ  ᥩ    ᪮쪮  ࠧ   ᯮᮡ
樨   (cmNewWin),  ⮡  :   ப
,      .    ,    
᪠ 襩  ணࠬ    ,      .
  ,    ணࠬ        ⮬,    
 ,   ᮧ .  樨 ᨬ.
     ᫨     離   - ६
롮 ,  ७  稥   -   㦭  ⮬
ᯮ   㬠  ⮬,   㤥   ⠫쭮
. ..   ணࠬ஢,   ࠢ塞   ᮡﬨ,   ⤥
஥஢ 짮⥫᪮   䥩      ࠡ   襩
ணࠬ     ࠧ   ணࠬ 㭪樮஢
ᨬ.


                          ⨥ .

     ᯮ㥬 ꥪ:    TRect,    TView,   TWindow,   TGroup,
TScroller, TScrollBar.
     ᫨   ணࠬ,    ࠧ ३   ࠧ,
 ⮫쪮  ஥ .  ஬ ⮣,        
  ᠭ  ணࠬ, 祬 ᮧ ?
      뫮    ⠪,  ᫨     Turbo   Vision   뫠   ஬
ࠤ樮   ணࠬ.   ⮬ 砥 室  
ࠧ  ⪠  ࠡ 뫠  襩 .
      Turbo  Vision -  ࠤ樮 ⥪.  ᫨  ⠫
।騥 ࠧ,    㦥      ⮬.    ⮣,   ⮡
ணࠬ஢    Turbo  Vision  室  믮  
⢨  ⮣,   ᮧ .  室 , 
⠪    Turbo  Vision  (  ꥪ!)  祬  ⫨砥 
,    ᯮ짮 ࠭.    ᤥ  ,  
த । ࠧ , 祬   ࠧ.
     ⮬, ᫨    뫨   ⮬ ,   室
  ।騬 ࠧ   .


                   ⠭⭮ ଫ .

      Turbo  Vision  -    ꥪ     ஥      
 ॠ஢         짮⥫    ᠭ
ᯥ樠쭮 .   Turbo Vision 㦥      뢠,
 ࠧ, ६  뢠.      
Turbo Vision.   Turbo Vision ᮤন ,   ᮤঠ    祬
ࠢ 㣨  ꥪ:    ꥪ ⮡ࠦ ᥡ  ࠭.
 ࠢ 묨 ⠬  㭪樨 襩 ணࠬ  - 
 ,      ᮤন    묨  ࠢ.
 ,  ᮧ , ।⠢  
 ⮬,           .        ஢
⠭   ⥬ ⠬,       
?    ᭮ ,    稫   
஥  ᯮ짮.  筨   ⠭⭮  ,  ⥬
 ॡ㥬    .    ⮫쪮    ᬮ
᪮쪮 ᫥ ਬ஢,   㢨     騢
ணࠬ  ।⠢ Turbo Vision ᭮.
     騩  樠   ᮥ    
࠭.      ⮤   襣 ⨯
TMyApp. ⨬,     ।  ⨯  (TDemoWindow)
     ⮤  ⨯ ।.    ࠭  
ᮧ ᭮,   ᬮ  ࠨ.  
 ⮤  室.

 {    TVGUID04.PAS }

uses Views;

const
  WinCount: Integer =   0;   { 樠 稪  }

type
  PDemoWindow = ^TDemoWindow;   { ⨬,   ᥣ 
                                  ⨯ 㪠⥫   
                                  ꥪ⭮ ⨯ }
  TDemoWindow = object(TWindow)  { ।  ⨯  }
  end;

procedure TMyApp.NewWindow;
var
  Window: PDemoWindow;
  R: TRect;
begin
  Inc(WinCount);
  R.Assign(0, 0, 26, 7);       { ⠭ 砫쭮 ࠧ 
                                 樨 }
  R.Move(Random(58), Random(16));  { 砩 ६饭 
                                     ࠭ }
  Window := New(PDemoWindow, Init(R, 'Demo Window', WinCount));
  DeskTop^.Insert(Window);     { 뢥    ࠭ }
end;

procedure TMyApp.HandleEvent(var Event: TEvent);
begin
  TApplication.HandleEvent(Event);    {   । }
  if Event.What = evCommand then
  begin
    case Event.Command of     {  ⪫  ⥫
                                 }
      cmNewWin: NewWindow;    { । ⢨  
                                cmNewWin }
    else
      Exit;
    end;
    ClearEvent(Event);        { 頥 ᮡ⨥ ᫥ ࠡ⪨ }
  end;
end;

     ⮡ ᯮ짮         ணࠬ,    室
易 ணࠬ cmNewWin    樥      祩  襩
ப ,      ࠭.   짮⥫ 뢠
cmNewWin, Turbo Vision  뫠      TMyApp.HandleEvent,
 ॠ, 뢠 TMyApp.NewWindow.


                        樠 .

      室 ।      Turbo  Vision  3  ࠬ,
⮡     ᥡ  樠஢:    ࠧ   
࠭,    .
      ࠬ  TRect - אַ㣮 ꥪ  Turbo Vision -
। ࠧ   .   ⮤ Assign   ࠧ
 ,  ᭮    孥       ࠢ 㣫.
 ᪮쪮 ᯮᮡ  祭      ꥪ⮢
TRect. .    14  "ࠢ筨      ⠬"  
 ᠭ.

     ਬ砭: ꥪ TRect ⠫쭮 ᠭ     4  "
".

      TVGUID04  R ᮧ  砫 DeskTop,  ⥬ ᬥ頥 
砩 ﭨ      ࠭.  "ଠ"  ணࠬ,
⭮,   믮 ⠪ 砩 .   ᤥ
⮫쪮  ਬ,  ⮡    ᪮쪮    ⮡
  ࠧ頫   .
     ன ࠬ   樠樨   -      ப,    
⮡ࠦ   .
     ᫥ ࠬ ࠭    Number. ᫨ Number 
1    9,    뢮   ࠬ   짮⥫  
஭㬥஢ ,   Alt-1  Alt-9.
     ᫨     㦭      ,   ।
⠭ wnNoNumber.


                           ⮤ Insert.

     ⠢     DeskTop  ⮬᪨  ਢ   
. ⮤ Insert ᯮ, ⮡  㠫 ஫ 
 ⮬.   믮

     DeskTop^.Insert(Window);

      ⠢ Window   ࠭.   ⠢ 
᫮   ⮢    㯯  ꥪ,  ⠪    
࠭. 㯯,     ⠢   뢠
 ⮬ -  楬,      ,    
⠢,  뢠  ⮬.  ⨬,  
 ᠬ     㯯        ᢮  
. ਬ,      ⠢    ࠭,
  ⮬,      ࠬ, ᠬ
஫  㣨 묨 ⠬.
        ⠭  痢    묨  ꥪ⠬
ᮧ ॢ     ⮢.  (裡    묨
⠬ ᭥   4.)


                          ⨥ .

     ⬥⪠ 뢠饩       ⠪  
cmClose,   易   襩  Alt-F3    ⮬  ப
.  㬮砭 ⨥  (१ F4  롮   File
/Open) ⮬᪨ ࠧ蠥  cmClose    ,
    ( ⠪  㣨  ,  ⠪ 
cmZoom, cmNext).
        ॡ       ⮣,  ⮡  .
 짮⥫ ⬥⨫ 뢠   ,  Turbo  Vision
ᤥ   ⠫쭮.    㬮砭    ॠ   
cmClose 맮 ᢮ ࠪ Done:

     Dispose(MyWindow, Done);

       ⮤  Done,   뢠 ⮤ Done   
᢮ ⮢. ᫨  ᠬ ।﫨 ⥫ 
 ࠪ ,   ॡ ᢮      ⮤  
Done.


                           .

      ஡㥬 ࠡ  襩 ணࠬ.  㦥 
 ⥩.           ,  ,  ,
६   ࠧ ⢠        ࠭.
  , 祬  ப !
     ᫥ ⮣,  TMyApp 樠 ,  ⠢  
 ࠭.    , DeskTop -  㯯,  砥,
  祭 -    ࠢ  묨  ⠬,
⠪   .  ᫨  ⪮஢  믮 ,  
,      ࠧ,  ६    뢠
 .        誨  ८ࠧ    ᮡ⨩ 
ࠢ   ࠭     ,  ஥  ,  
ࠡ .
     ᫨  ࠭  맮  cmNewWin,      ࠭  㤥
 ᪮쪮     㭨묨 ࠬ.    
 ࠧ,  롨  ६.  .  2.2 뢠
 ࠭,  ஬  ᪮쪮 .


       . 2.2.  TVGUID04    ᪮쪨 묨 .

Ŀ
  File  Window                                                   

 Demo Window 3Ŀ
                   Demo Window 7Ŀ
                                    
                                    
   Demo Window 8Ŀ               
                                   
ĳ                                 
 Demo Window 1Ŀ                    ٰ
                                           
                                           
     Demo Window 4     
                          Demo Window 6ĿWindow 2Ŀ
                                                     
ĳ                   ĳ                            
                  [] Demo Window 9[]ͻ            
                                                      
ĺ                                    
                        ٰ
                        
                        
ٰ

 Alt-X Exit  F4 New  Alt-F3 Close                                



     TWindow -    㯯,    ࢮ砫쭮   
 ⮬ TFrame. 짮⥫ ⬥砥   ࠬ 
६饭,  ࠧ   .   ⮡ࠦ
,   祭  ६  樠樨      
 䮭 梥⮬ ,  ⠪  TBackGround  ࠭.
  ந室  ᠭ 襣 .


                      ᬮ   .

     ᫨  ࠡ⠫  ࠤ樮묨 ,  ᫥騬 蠣 
⠥  -  .   TWindow     ᪠
 :    㯯 Turbo Vision,  ꥪ TGroup  ࠭
।⠢ ᥣ,     . ⮡  - 
,   室 ᤥ ⥫ 蠣,    
 㪨 ஬ .
     ⮡ -   ,   ᮧ  ,
   ᮢ ᥡ    ⠢      .  
  뢠 ஬.
       㤥   ,     㧭
   㬥    ࠧ    ᢮     㣨
 ⮢.      ᪮쪨  ࠬ  
 ᫮  㣨     ⮢:  ப ,
⪠, .   ⠪ 㢨       
஫  ࠬ .
       ४뢠   㯯 -  ,
 묨  ,   孨.  TDeskTop 
⮤ Tile,    ४뢠   ᫥ 
樠樨,   ⮤ ᯮ ⮫쪮   ࠭.
      ᮧ    ᫥    TView.  
TView   ࠬ,    ࠬ 筮 .
 TView,      ⬥祭, 室  
祭   뢮    ⮣   .   ࠬ
  .
     ᫨   TView      ,   
祭    ࠬ - ࠬ  뢠  ࠬ .
᫨  ,  祬 ,  ࠬ  . ᪮쪮
஢     㦥 ࠬ,    㢨
 ਬ.
     騩  뢮 "Hello, World!"  樮 ,
   . 2.3.

   { TVGUID05.PAS }

  PInterior = ^TInterior;
  TInterior = object(TView)
    constructor Init(var Bounds: TRect);
    procedure Draw; virtual;
  end;

constructor TInterior.Init(var Bounds: TRect);
begin
  TView.Init(Bounds);
  GrowMode := gfGrowHiX + gfGrowHiY;
end;

procedure TInterior.Draw;
begin
  TView.Draw;
  WriteStr(4, 2, 'Hello, World!');
end;

constructor TDemoWindow.Init(Bounds: TRect; WinTitle: String;
                             WindowNo: Integer);
var
  S: string[3];
  Interior: PInterior;
begin
  Str(WindowNo, S);        { ⠭     }
  TWindow.Init(Bounds, WinTitle + ' ' + S, wnNoNumber);
  GetClipRect(Bounds);
  Bounds.Grow(-1,-1);     {  頥  ࠬ  }
  Interior := New(PInterior, Init(Bounds));
  Insert(Interior);    {     }
end;


               . 2.3. TVGUID05   .

Ŀ
  File  Window                                                   





[]Demo Window 1 []ͻ
                      
                      
    Hello, World!     
                      
                      
ٰ





 Alt-X Exit  F4 New  Alt-F3 Close                                



                            ?

      ꥪ  Turbo  Vision    ᥡ ᠬ   ⮤
Draw. ᫨    ᮧ  ஦     ꥪ      
।⠢   ࠭,    ॡ  ४  ⮤ Draw
।       ꥪ  ।⠢  ᥡ     ࠭.
TInterior ஦  TView   ॡ  ⮤ Draw.
     ⨬,   TInterior.Draw 砫 뢠 Draw ᢮
।, TView,     ⮬ 砥  頥 אַ㣮쭨
 ꥪ.  筮   ॡ  ⮣: ⮤ Draw
     ᯮ짮    ᢮  ,    맮
TView.Draw 㦭.
     ᫨    ⢨⥫쭮         -    
,   㦭 뢠 㭠᫥ ⮤  Draw .
맮 TView.Draw  㤥  ਢ    ,  ᪮ 
  ᮢ   ࠧ.
      ⢥  ਬ      ஡ ४஢
TVGUID05.PAS    ஢   맮   TView.Draw.   ⥬
।   ࠧ .  ⠭ ᮢ襭 ᭮, 祬
   뢠  ᢮ !

     ਬ砭: Turbo Vision 뢠 ⮤ Draw  
 짮⥫  뢠,  뢠,  ६頥  
ࠧ  . ᫨  ॡ, ⮡  
ᮢ ᥡ  ᠬ,  맮  DrawView    Draw.  DrawView
   ⮫쪮  ᫨    ⮣  ॡ.    :   
४뢠 Draw,     뢠  אַ;  뢠
DrawView,    ४뢠 !


                     訩 ᯮᮡ  Write.

         믮 楤 Write  Turbo Vision,  
 .  -,  ᫨     -,  
ᯮᮡ । 砩 ࠭   㣮 
. -,   ॡ     न
⥪饣     ᥪ   ࠭栬.  -,
⠥   ᯮ짮 梥  뢮.
     楤 WriteStr  Turbo  Vision  ⮫쪮    
 न   ᥪ  ࠭栬  ,
 ⠪      ᯮ짮    梥⮢    .
楤 WriteStr  न X   Y,  ப      
 梥  ⢥ ࠬ஢.
     筮 WriteStr, 楤 WriteChar ।:

     WriteChar(X, Y, Ch, Color, Count);

      WriteStr,  WriteChar  樮   ᢮   뢮   
न (X,  Y)          Count 
ᨬ Ch 梥⮬,  㪠뢠 ⮬ Color   
.
        ⮤  뢠 ⮫쪮  ⮤
Draw  .   ⢥ ,    ॡ
 -  Turbo Vision.


                     ⮩ ᬮ 䠩.

      ⮬  ࠧ   ᪮쪮  㭪権   
 ⨬   - ॠ쭮.     ⮤  
⥭ ⥪⮢ 䠩  ᪠  ⮡ࠦ   .

     ਬ砭:   ணࠬ  㤥  뢮  "譨"
ᨬ.  ᯮ.

   { TVGUID06.PAS }

const
  MaxLines  = 100;        {  ந쭮 ᫮ ப }

var
  LineCount: Integer;
  Lines: array[0..MaxLines - 1] of PString;

type
  PInterior = ^TInterior;
  TInterior = object(TView)
    constructor Init(var Bounds: TRect);
    procedure Draw; virtual;
  end;

procedure TInterior.Draw;      {  룫廊 ࠧ! }
var
  Y: Integer;
begin
  for Y := 0 to Size.Y - 1 do  { ⮩ 稪 ப }
  begin
    WriteStr(0, Y, Lines[Y]^, $01);   { 뢮  ப }
  end;
end;

procedure ReadFile;
var
  F: Text;
  S: String;
begin
  LineCount := 0;
  Assign(F, FileToRead);
  Reset(F);
  while not Eof(F) and (LineCount < MaxLines) do
  begin
    Readln(F, S);
    Lines[LineCount] := NewStr(S);
    Inc(LineCount);
  end;
  Close(F);
end;

procedure DoneFile;
var
  I: Integer;
begin
  for I := 0 to LineCount - 1 do
    if Lines[I] <> nil then DisposeStr(Lines[i]);
end;


                     ⥭ ⥪⮢ 䠩.

      ணࠬ 뢠 ReadFile  㧪 ⥪⮢ 䠩
 ᨢ  Lines    DoneFile  ᢮ ,  ᯮ㥬
Lines, ᫥ 믮.
      ReadFile    ⨯ PString -  㪠⥫  ப.
Turbo Vision ⠪  ।⠢ 㭪 NewStr,  ࠭
ப       頥  㪠⥫   .    NewStr
頥 㪠⥫,   ᯮ Dispose    ᢮.
ᥣ ᯮ  楤  DisposeStr    㤠  ப 
.


                       ਧ 뢮.

      ⨫,      믮  ⮩  ணࠬ   ࠭
 ""  ⠬,           ப.   
१   ⮤  Draw.      -  襭
ਭ樯,  ⮤ Draw       뢠  
頤,   ⢥砥   .
     ஬ ⮣, ⥪⮢ ᨢ Lines   ᮮ⢥饩
ମ  ⮡ࠦ   .   筮 ⮨ 
ப ६ ,         㫥  .
᪮ ⮤  Draw    ४뢠     ,
⥪⮢ ப   ७  ਭ  .


                            뢮.

     ⮡   ⮣,  ᮧ  Draw,   砥
 ப       뢮    .  TDrawBuffer  -  
 ⨯:

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

     ਬ砭: MaxViewWidth ࠢ 132 ᨬ.

     TDrawBuffer ᮤন   ਡ⠬   ᨬ.
      TInterior.Draw  :

    { TVGUID07.PAS }

procedure TInterior.Draw;
var
  Color: Byte;
  Y: Integer;
  B: TDrawBuffer;
begin
  Color := GetColor(1);
  for Y := 0 to Size.Y - 1 do
  begin
    MoveChar(B, ' ', Color, Size.X); {  ப ஡ }
    if (Y < LineCount) and (Lines[Y] <> nil) then
      MoveStr(B, Copy(Lines[Y]^, 1, Size.X), Color);
    WriteLine(0, Y, Size.X, 1, B);
  end;
end;

     . 2.4 뢠 TVGUID07  ᪮쪨 묨 .

               . 2.4. ᬮ ᪮쪨 䠩.

Ŀ
  File  Window                                                   

 Demo Window 3 Ŀ
{*********************
{                     
{   Turbo Pascal 6.0  
{   Demo program from 
{                     
ٰ
 Demo Window 1 Ŀ[]Demo Window 5 []ͻ
{********************{*********************
{                    {                     
{  Turbo Pascal 6.0  {   Turbo Pascal 6.0  4 Ŀ
{  Demo program from {   Demo program from ******2 Ŀ
{                    {                           ******
ٰ 6.0        
{   Demo program from  6.0  
{                      from 
      
ٰ




 Alt-X Exit  F4 New  Alt-F3 Close                                


     Draw 砫  ᯮ  MoveChar     ६饭   Size.X
஡ (ਭ  )  ᮮ⢥饣 梥  TDrawBuffer.
  ப   ஡    ਭ  .
⥬ Draw  ᯮ  MoveStr   ஢ ⥪⮢ ப 
TDrawBuffer. ⥬ ⮡ࠦ   १ 맮 WriteLine.


                     뫪 ⥪  .

     Turbo Vision   ।⠢   4      楤  
뫪 ⥪  TDrawBuffer:  MoveStr,      ⮫쪮  
,  MoveChar, MoveCStr  MoveBuf,  뫠 ᨬ,
ࠢ騥 ப (ப  "~"  ⮢     )  
㣨     ,  ᮮ⢥⢥.    楤 ᭥
⠫쭮   14.


                    뢮  ᮤন .

     Turbo Vision  ।⠢ 2 楤  뢮 ᮤন
   .  ,  WriteLine(X,  Y, W, H, Buf), 뫠
  TVGUID07.
      TInterior.Draw,  WriteLine  뢮  TDrawBuffer     
ப. ᫨ 4 ࠬ,  H (),  1, WriteLine 
   ᫥  ப.  ,  ᫨  Buf  ᮤন  "Hello,
World!",  WriteLine(0, 0, 13, 4, Buf) 뢮

     Hello, World!
     Hello, World!
     Hello, World!
     Hello, World!

     㣠 楤 WriteBuf(X,  Y,  W,  H,  Buf)  ⠪  뢮
אַ㣮   ࠭.  W  H ᮮ⢥ ਭ  
. ᫨ Buf ᮤন "ABCDEFGHIJKLMNOP",   WriteBuf(0, 0, 4,
4, Buf) 뢮

     ABCD
     EFGH
     IJKL
     MNOP

      ,    ࠢ   ਧ묨  WriteStr  
WriteChar     㪠뢠        梥⮢.  
易  ⥬,  梥   ⥪ 뫠   -
  砥,    ⥪           ࠧ묨
ਡ⠬. WriteLine  WriteBuf ⠫쭮 ᭥   14.


                         쪮 뢮?

     ⨬,  TInterior.Draw 뢮 ⠪   䠩,  ⮡
 . , Draw 㤥    ६
 뢮  ⥩  䠩,         ᥪ   ࠭栬
TInterior.
     ᫨     ᢮ ᮢ   ६,
      맢     GetClipRect.    GetClipRect    頥
אַ㣮쭨,   㯥      ⠪,    
ॡ ᮢ  ⮫쪮     .  ਬ,
᫨       ᫮         冷   ⮢
ࠢ     ।      ।  ࠭,  맮
GetClipRect   ᮢ,  ⮡     ᮢ뢠      
 ,  室  । ࠭.


                      ஫   .

     祢,  ᬮ 䠩    祭-  ,  ᫨  
 ᬮ  ⮫쪮  ᪮쪮   ப 䠩.  ⮬
             ஫  
     ஫ ⠪,  ⮡ TInterir ⠫ ,
᪮騬 (஫㥬)  ⥪⮢ 䠩.   ⠪   
 TDemoWindow,    ⮤ MakeInterior,  ⮡ ⤥
 㭪  堭  .

   { TVGUID08.PAS }

type
  PInterior = ^TInterior;
  { ⨬,    ।  TInterior }
  TInterior = object(TScroller)
    constructor Init(var Bounds: TRect; AHScrollBar,
      AVScrollBar: PScrollBar);
    procedure Draw; virtual;
  end;

  PDemoWindow = ^TDemoWindow;
  TDemoWindow = object(TWindow)
    constructor Init(Bounds: TRect; WinTitle: String; WindowNo: Word);
    procedure MakeInterior(Bounds: TRect);
  end;

constructor TInterior.Init(var Bounds: TRect; AHScrollBar,
  AVScrollBar: PScrollBar);
begin
  TScroller.Init(Bounds, AHScrollBar, AVScrollBar);
  GrowMode := gfGrowHiX + gfGrowHiY;
  SetLimit(128, LineCount); { ਧ⠫쭠  ⨪쭠
                              ࠭ ஫ }
end;

procedure TInterior.Draw;
var
  Color: Byte;
  I, Y: Integer;
  B: TDrawBuffer;
begin
  Color := GetColor(1);
  for Y := 0 to Size.Y - 1 do
  begin
    MoveChar(B, ' ', Color, Size.X);
    i := Delta.Y + Y;       { Delta - ᬥ饭 ஫ }
    if (I < LineCount) and (Lines[I] <> nil) then
      MoveStr(B, Copy(Lines[I]^, Delta.X + 1, Size.X), Color);
    WriteLine(0, Y, Size.X, 1, B);
  end;
end;

procedure TDemoWindow.MakeInterior(Bounds: TRect);
var
  HScrollBar, VScrollBar: PScrollBar;
  Interior: PInterior;
  R: TRect;
begin
  VScrollBar := StandardScrollBar(sbVertical + sbHandleKeyboard);
  HScrollBar := StandardScrollBar(sbHorizontal + sbHandleKeyboard);
  Interior := New(PInterior, Init(Bounds, HScrollBar, VScrollBar));
  Insert(Interior);
end;

constructor TDemoWindow.Init(Bounds: TRect; WinTitle: String;
  WindowNo: Word);
var
  S: string[3];
begin
  Str(WindowNo, S);
  TWindow.Init(Bounds, WinTitle + ' ' + S, wnNoNumber);
  GetExtent(Bounds);
  Bounds.Grow(-1, -1);
  MakeInterior(Bounds);
end;

             . 2.5. ᬮ 䠩  ஫.


Ŀ
  File  Window                                                   
 Demo Window 1 Ŀ
{*****************************************
{                                         
{   Turbo Pascal 6.0                      
{   Demo program from the Turbo Vision Gui
{                                         
{   Copyright (c) 1990 by Borland Internat
{                                         
{*****************************************
                  [] Demo Window 3 []ͻ
program TVGUID08;   AVScrollBar: PScrollBar);
                  begin                      Window 2 Ŀ
uses Objects, Driv  TScroller.Init(Bounds, AH              
                    GrowMode := gfGrowHiX + g: Integer;    
ĺ  Options := Options or ofFray[0..MaxLine
  SetLimit(128, LineCount);              
end;                                     
                           object(TApplic
procedure TInterior.Draw;  re HandleEvent
var                        re InitMenuBar
  Color: Byte;             re InitStatusL
<>ٰ

 Alt-X Exit  F4 New  Alt-F3 Close                                


     ⨪쭠       ਧ⠫쭠            ஫
樠   ⠢    㯯,    ⥬  । 
TScroller   樠樨.
     "஫" -         ,  ஥஢  
⮡ࠦ  讣 㠫쭮  . ஫
     ஫  ꥤ    ᮧ  ᪮饣
   ⥫묨 ᨫﬨ  .  ,   
㦭 ᤥ -  ᮧ ⮤ Draw  ஫ ⠪,  ⮡ 
⮡ࠦ ᮮ⢥    㠫쭮    .
 ஫   ⮬᪨   ࠢ   祭ﬨ  Delta.X
(,  ன 稭 뢮)  Delta.Y (ப,   ன
稭 뢮) ஫.
       ४ ⮤ Draw    TScroller.  祭  Delta
    ᮮ⢥⢨     ᠬ  ஫.  ⮤  Draw
뢠  ࠧ,   Delta.


                ᪮쪮  ⮢  .

      த㡫㥬         ᮧ      
᪮騬 묨 ⠬   ⥪⮢  䠩.  誠  
 Tab  ⮬᪨ 롨ࠥ    ஢. 
  ᪮짨 ᨬ      ᮡ⢥  
.
     ⮡ ᤥ ,   ⮤ MakeInterior ⠪, ⮡ 
,         ⨢  ஬ (᪮
ࠧ    ᥡ  ᪮쪮  -ࠧ)    ᤥ  2
맮 MakeInterior  TDemoWindow.Init.

   { TVGUID09.PAS }

 {     MakeInterior }
procedure TDemoWindow.MakeInterior(Bounds: TRect; Left: Boolean);
var
  Interior: PInterior;
  R: TRect;
begin
  Interior := New(PInterior, Init(Bounds,
  StandartScrollBar(sbHorizontal),
  StandartScrollBar(sbVertical)));
  if Left then Interior^.GrowMode := gfGrowHiY
  else Interior^.GrowMode := gfGrowHiX + gfGrowHiY;
  Insert(Interior);
end;

constructor TDemoWindow.Init(Bounds: TRect; WinTitle: String;
  WindowNo: Word);
var
  S: string[3];
  R: TRect;
begin
  Str(WindowNo, S);
  TWindow.Init(Bounds, WinTitle + ' ' + S, wnNoNumber);
  GetExtent(Bounds);
  R.Assign(Bounds.A.X, Bounds.A.Y, Bounds.B.X div 2 + 1, Bounds.B.Y);
  MakeInterior(R, True);
  R.Assign(Bounds.B.X div 2, Bounds.A.Y, Bounds.B.X, Bounds.B.Y);
  MakeInterior(R,False);
end;


              . 2.6.   ᪮쪨 ﬨ.

Ŀ

[] Demo Window 1 []ͻ
                       while not Eof(F) and (LineCount
var                    begin                          
  LineCount: Integer;    Readln(F, S);                
  Lines: array[0..Max    Lines[LineCount] := NewStr(S)
                         Inc(LineCount);              
type                   end;                           
  TMyApp = object(TAp  Close(F);                      
    procedure HandleEend;                             
    procedure InitMen                                 
    procedure InitStaprocedure DoneFile;              
    procedure NewWindvar                              
  end;                 I: Integer;                    
                     begin                            
<>ٰ



     ⨬,           ᮤন MakeInterior.
   ᪨  ஫  ।  
⮤ Init,    稫 맮 StandardScrollBar  ⢥
ࠬ஢ Init.  । ଠ ᪮쪮 ᭥,      
䥪⨢.
     ᫨   㬥      TVGUID09.PAS,    ,  
⨪쭠   ஫  㤥  ४   ஬
 ,  ᫨  । ࠢ ஭  ᫨誮
   .  ⮡  ।  ,     ⠭
 ⨬ ࠭    㬥襭  .      ,
४뢠 ⮤ SizeLimits  TWindow.

     { TVGUID10.PAS }

  {    SizeLimits  TDemoWindow.  㠫
    ⮤}
procedure TDemoWindow.SizeLimits(var Min, Max: TPoint);
var R: TRect;
begin
  TWindow.SizeLimits(Min, Max);
  GetExtent(R);
  Min.X := R.B.X div 2;
end;

     ⨬,          뢠   SizeLimits,      
४뢠    㤥  뢠    ᮮ⢥饥  ६.
     ,      ⮤ Draw:   
    ᮢ,    .  Turbo Vision 㦥
   맢  Draw.      ਬ   SizeLimits:  
⠭ ࠭,       ,  
室 ஢ .


                 㤠  㭪樮쭮.

       ᮧ   冷    ⮢:  ࠬ  
 ᪮騬 ࠬ,     ᠬ ஫.
 室   ᮧ , ஥ 믮 ।
㭪樨  襩 ணࠬ.
       ⢮?  ⨬,    ந  
 ⥪⮢ ।. ᪮   2  , 
   㭪樨 ।   㯯,    ⥬
⠭ ⢨   㯯      묨  ⠬.
 㯯 砥  ࠢ 묨 ⠬.   
祭- ⢥,  ⠪ ?
         㯯   ⮬    
 뢠    㦭  㭪,  ணࠬ 
Turbo Vision 㤥       ,  ᫨    㤥
᫥    ࠢ:   ࠭  ꥪ      
⮭묨  ࠭ 㯯 (⠪  )      
᢮묨  㭪樮쭮 㧪.
     ,   ᮧ ⥪⮢ ।,   㭪樨
       :  ᮧ      ⨯
⥪⮢ ।.       ᯮ짮,
᫨   ࠢ쭮 ஥஢  ,  ७ ⥪⮢
।   । 㤥 㤭,  ᫨    㭪樨  뫨
।  㯯   ⮬.


                       .

     ᯮ㥬 ꥪ:  TView,   TGroup,   TDialog,   TCluster,
TCheckBoxes, TRadioButtons, TLabel, TInputLine.
        -      ᯥ樠      .   
⢨⥫쭮 TDialog  ᫥    TWindow    
஢      㣮  ,  筮    㤥
   -㣮.
      襩 樮 ணࠬ      
,     ,  뢠    ,
 ⮤   ணࠬ,          
 ப  ⮤ HandleEvent 襩 ணࠬ,  ⮡ 易
  ⢨.
     ⨬,      ॡ ஦  ⨯ ꥪ 
TDialog,        TWindow  (⮡  ᮧ  TDemoWindow).
 ᮧ  ᯥ樠쭮  ⨯     
"ࠧ㬭"  ணࠬ:   ᮧ ꥪ ⨯ "
",          ,    ᮧ  饥
        ᤥ.
      ।  ॡ  ᮧ  ஦ ⨯  TDialog,
᪮ ⫨稥  묨  ⮫쪮   ᮤন.

 { TVGUID11.PAS }

const
  cmNewDialog       = 200;

procedure TMyApp.InitMenuBar;
var R: TRect;
begin
  GetExtent(R);
  R.B.Y := R.A.Y + 1;
  MenuBar := New(PMenuBar, Init(R, NewMenu(
    NewSubMenu('~F~ile', hcNoContext, NewMenu(
      NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
      NewItem('~N~ew', 'F4', kbF4, cmNewWin, 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,
      NewItem('~D~ialog', 'F2', kbF2, cmNewDialog, hcNoContext,
      nil)))),
    nil))
  )));
end;

procedure TMyApp.NewDialog;
var
  Dialog: PDialog;
  R: TRect;
begin
  R.Assign(0, 0, 40, 13);
  R.Move(Random(39), Random(10));
  Dialog := New(PDialog, Init(R, 'Demo Dialog'));
  DeskTop^.Insert(Dialog);
end;

procedure TMyApp.HandleEvent(var Event: TEvent);
begin
  TApplication.HandleEvent(Event);
  if Event.What = evCommand then
  begin
    case Event.Command of
      cmNewWin: NewWindow;
      cmNewDialog: NewDialog;
    else
      Exit;
    end;
    ClearEvent(Event);
  end;
end;

                . 2.7. ⮥  .

                [] Demo Dialog Box ͻ
                                             
                                             
                                             
                                             
                                             
                                             
                                             
               ͼ

      ᪮쪮  ࠧ稩           
।騬 :
     -   㬮砭     ᨭ.
     -      ࠧ.
     -     .
     ⨬,        ,  ⬥⨢ 
뢠   ⬥⨢  Alt-F3  ப   
   ESC.    㬮砭    ESC 㤠 
.
      ਬ,  ⠪ 뢠,   "쭮" 
( ०).   筮 ,  ।
० ⢨.   筮,      뢠    ,
⨢  ⮫쪮  :      .
⬥⪠ 㣨      㤥 뢠  ⢨ 
 ,    室  ०  .   
   쭮   ,    設⢥
砥   㤥  ࠡ     묨   묨   
(   㦤   4).


              믮 쭮  .

      ᤥ      ?    祭  .
 ⠢  ꥪ  "  "      ࠭   
믮 , 뢠 㭪 DeskTop^.ExecView:

 { TVGUID12.PAS }

procedure TMyApp.NewDialog;
var
  Dialog: PDialog;
  R: TRect;
  Control: Word;
begin
  R.Assign(0, 0, 40, 13);
  R.Move(Random(39), Random(10));
  Dialog := New(PDemoDialog, Init(R, 'Demo Dialog'));
  Control := DeskTop^.ExecView(Dialog);
end;

     TDialog 㦥   ॠ஢  ᮡ⨥      ESC
(஥ ८ࠧ      cmCancel)   ᮡ⨥  
Enter (஥ ࠡ뢠     㬮砭
TButton).   ⢥      cmCancel      ᥣ
뢠.
     맮 ExecView  ⠢       㯯  
  .  믮 ந室  ExecView  
,      ஥   㤥 㤠. ᫥
⮣ ExecView 㤠      㯯    ⢫
室.            祭,  頥
㭪樥 ExecView  ࠭  Control.   㤥  ᯮ짮
 祭  TVGUID16.


                            ࠢ.

     筮, ⮥    -        !
⮡       ࠢ. 
ࠢ -  騥        ,
   㫨஢ ଠ樥.   ,
  ࠢ  ⮫쪮   .
      ⮫쪮    ᪫祭   ⮣ ࠢ  砥
  쭮  .  ᪮   
,     ࠭  ⥪饣 쭮
 .  ᫨   -    
,             ࠭    ।
 ,        䥪  (ࠡ⪠
 ᭥   5).
     饬,   ࠢ  ⠭    
,   ⤥  ।⠢  ࠡ⪨ .
 砥,       ஥஢    
  ᮧ ,  ⠭  ᯮ 
 ⮣  ,  ⠪      ⠭  
    , ॠ饣  ᣥ஢ .


                              .

       ⥩ ꥪ⮢ ࠢ - TButton.   ࠡ⠥
   筮    ப  :    襭
  ⥪⮢ ⪮ ,  ᫨  ⬥ ,   
.   ⠪    ⥭    ,  ⠪,    ᫨ 
⬥ ,  ᮧ 䥪 .
     設⢮   ,   ࠩ ,   
 .    騥  "OK" ( "  ᤥ.
       ᯮ짮  १.")  
"Cancel" ( "      ஢
, ᤥ  ").  Cancel 筮   
 cmCancel,   뢠 .
      Dialogs  ।  5  ⠭   ,
   易  TButton:  cmOK, cmCancel, cmYes, cmNo,
cmDefault.   4    ⠪    뢠   ,
뢠 ⮤  EndModel      TDialog,      ⠭
।騩      쭮.
       ⠪  ᯮ짮      樨  ,
ᯥ  襩 ணࠬ.

 { TVGUID13.PAS }

procedure TMyApp.NewDialog;
var
  Dialog: PDialog;
  R: TRect;
  Control: Word;
begin
  R.Assign(20, 6, 60, 19);
  Dialog := New(PDialog, Init(R, 'Demo Dialog'));
  with Dialog^ do
  begin
    R.Assign(15, 10, 25, 12);
    Insert(New(PButton, Init(R, '~O~K', cmOK, bfDefault)));
    R.Assign(28, 10, 38, 12);
    Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal)));
  end;
  Control := DeskTop^.ExecView(Dialog);
end;

       ॡ 4 ࠬ஢  ࠪ Init:
     1. ,  뢠  (   ⠢  
 ⥭!).
     2. ,    .
     3. , 易  .
     4.  ⨯ . (ଠ쭠   㬮砭)


               . 2.8.    .

             [] Demo Dialog Box ͻ
                                                  
                                                  
                                                  
                                                  
                                                  
                                                  
                                                  
                              OK        Cancel  
                                  
             ͼ

     ⨬,    ᢥ稢 ""  "Cancel", ᪮ 㦥
।   (Esc)  ⬥   .  
᢮ ""  ᮪饭  㣨 ⮢ ࠢ.


                 ଠ    㬮砭.

       ᮧ ,   ⠭  䫠  bfNormal
 bfDefault.  設⢮  bfNormal. , 祭 
bfDefault, 㤥   㬮砭, ..  "", 
   Enter.  Turbo Vision  ஢, ᯮ
  ⮫쪮    㬮砭 -   ⢥砥  .  ᫨
  ,  祬    㬮砭,  १ 㤥
।᪠㥬.
     筮    "OK"         -      
㬮砭   짮⥫      Enter,  ⮡  
   ᯮ짮 ᤥ .


                   ⨢  ࠢ.

     ⨬,     ,    ⮢
ࠢ ᥣ  ᢥ祭  -    ⨢   ࠢ.
⨢   ࠢ        ࠢ
   .  ਬ,  ᫨  ⨢,  짮⥫
 "" ,   ஡.      
ப  ⮫쪮, ᫨  ⨢.
     짮⥫    Tab  ⮣,  ⮡ ᤥ
⨢ 㣮   ࠢ   .  ⪨
   ⨢묨,  ⮬  Tab  室    .
(⪨ 㦤   ⮩ ).
      室, ⮡ 짮⥫  ⨢஢  
     ।  浪.    Tab ⨢
  ⮬ 浪,    ꥪ ⠢﫨    
. ७,  ꥪ   ন         
横᪨ 易  ᯨ᪥    ᫥  ⠢   ꥪ⮬,
뢠   ꥪ⮬.
      㬮砭 ⨢  ᫥  ⠢  ꥪ.  
 ⨢஢  㣮  ࠢ  ᯮ ⮤
SelectNext   ,    אַ  뢠  ⮤   Select
 ࠢ.  SelectNext   । ।
     ᯨ   ⮢   ࠢ.   SelectNext(False)
।    ।    横᪮  ᯨ ( 浪 Tab);
SelectNext(True) ।  ⭮ ࠢ.


                              롮.

     筮 롮,       ।  짮⥫  
 ,                롮,    ࠡ뢠
㠫묨 .  Turbo  Vision   ᯥ稢   ᪮쪮
 ⠭  㭪権 ࠢ  롮 鸞 権. 
  -  ᨬ  ᨬ .
      2 㭪樨  ᭮    ᪫祭,  
   ᪮쪮  ᨬ,    ⮫쪮    ᨬ
. 稭 ⮣,       ᥡ 宦
 ⮬,   ஦   ꥪ TCluster.
     ᫨         楯樥  ᨬ    ᨬ
,   ᬮ  Options   ⥣஢  ।
Turbo Pascal.       ⮬  ᯮ ⠪
.


                         .

        稭   ⮣,  ⮡ ᮧ  
TCluster. ᪮  ᮧ    ᨬ  
祭 ᮧ      ᨬ  ,    ॡ
⠫쭮 ᬮ   ⮫쪮 .   ᫥騩
  ⮤ TMyApp.NewDialog ᫥ ᮧ  ,  
 .  ⠢      ᫥  ।     ⮬
浪,  ஬   室   Tab.

          Ŀ
           [ ] HVarti     
           [ ] Tilset     
           [ ] Jarlsberg  
          

     var
       B: PView;
     R.Assign(3, 3, 18, 6);
     B := New(PChecBoxes, Init(R,
       NewSItem('~H~varti',
       NewSItem('~T~ilset',
       NewSItem('~J~arsberg',
       nil)))
     ));
     Insert(B);

     樠 祭 .  ⠭ אַ㣮쭨, 
஬ 室  (  ⠢      ᠬ
ᨬ ),    ⥬ ᮧ 易 ᯨ᮪ 㪠⥫
 ப,  蠥 nil,         ᫥
ᨬ .


                   祭 ᨬ .

     ।騩   ᮧ    ᨬ       ६
롮ࠬ.   ,      㪠  ⠭
   ᯨ᪥.   㬮砭       ⠭.
    ॡ   ⠭        
ᨬ .   祭 祭,    ᮧ
ᯨ᮪, Turbo  Vision  ।⠢  ᯮᮡ   ⠭ 
࠭ 祭.
      ᨬ      ᮤঠ    16 ⮢.
᪮   16 ⮢,     祭  
몫祭,     ।⠢    ଠ    16-⭮
᫮,   ண ᮮ⢥  .
     ᫥ ⮣,     ᮧ ᥣ  ,
 㢨     ⠭         祭   ⮢
ࠢ.     ।稬      饭   ࠢ
⮢  ᮮ⢥饥 .


                            .

          ᨬ       ,
⮡   ࠢ   ᨬ묨 .  騩  
⠭   3 ᨬ :

          Ŀ
           [*] Solid    
           [ ] Runny    
           [ ] Melted   
          

               R.Assign( , , , );
               B := New(PRadioButtons, Init(R,
                 NewSItem('~S~olid',
                 NewSItem('~R~unny',
                 NewSItem('~M~elted',
                 nil)))
               ));
               Insert(B);

      ⫨稥  ᨬ묨    ᨬ묨    
⮬,      ⮫쪮  ᨬ   㯯 
    ᯨ᪥ ᨬ  ࠭  㬮砭.
     ᪮     ॡ   ﭨ  ᨬ
 (⮫쪮     ࠭,  ⠪,      ॡ
 ⮫쪮      ),       ᨬ    
⮢.   砥,        ᯮ짮    16
ᨬ ,      ᪮    ࠭    ᫮,  
࠭祭 65,536 ᨬ묨    .  祭  0
㪠뢠,  ࠭ ࢠ ᨬ , 1 -   ..


                   ⪨ ࠢ ⮢.

     筮, ⠭   ࠢ    ⮢        
筮. ⮥ ।⠢  롮஢  祣 
  짮⥫    ⮬,      롨ࠥ!  Turbo   Vision
।⠢   㤮   ⮤    ⠭  ⮪  ࠢ
⮢   㣮 ࠢ饣  TLabel.
     TLabel  ,  祬    . TLabel 
⮫쪮 ⮡ࠦ  ⥪,      뢠     㣨   
⮬. ⬥⪠  誮  ⪨ ਢ  ⨢樨 易
 .   ⠪   । 㪢  ᮪饭
  ⪨, 㦨 㪢 "~".
     ⮡   ᨬ  ,    ᫥騩  
ࠧ ᫥ ⠢ ᨬ    :

               R.Assign(2, 2, 10, 3);
               Insert(New(PLabel, Init(R, 'Cheeses', B)));

        ᥩ  ⨢஢     ᨬ   ,
⬥⨢ ᫮  "Cheeses".    ⠪   ।⠢ ଠ 
  ⮬ .
     筮           ᨬ  
 :

     { TVGUID14.PAS }
               R.Assign(21, 2, 33, 3);
               Insert(New(PLabel, Init(R, 'Consistency', B)));


          . 2.9.    ⪠ ஢.

             [] Demo Dialog Box  ͻ
                                                       
                Cheeses              Consistency       
               Ŀ   Ŀ   
                [ ] HVarti         [*] Solid       
                [ ] Tilset         [ ] Runny       
                [ ] Jarlsberg      [ ] Melted      
                     
                                                       
                                                       
                                                       
                                                       
                                   OK        Cancel  
                                       
             ͼ


                           ப .

        ⨯  ࠢ,   
     :      ।஢ 室
ப, 뢠 ப .   ⢨⥫쭮 ࠡ ப
 १砩   ᫮,         襩   窨   ७  
ணࠬ, TInputLine - 祭 ⮩  ᯮ짮 ꥪ.
      ᫥騩  ᫥ , 饣  ᨬ
   믮  :

     { TVGUID15.PAS }
         R.Assign(3, 8, 37, 9);
         B := New(PInputLine, Init(R, 128));
         Insert(B);
         R.Assign(2, 7, 24, 8);
         Insert(New(PLabel, Init(R, 'Delivery instructions', B)));

     ⠭ ப    :   砥 אַ㣮쭨,
 ।  ப   ࠭. 室  
ࠬ    । ᨬ쭮  ।㥬 ப.
    ॢ  ⮡ࠦ  ,  ᪮  ꥪ
TInputLine      믮  ஫  ப.   㬮砭
ப   ࠡ뢠  ,    ।஢,
롮     誨.

           . 2.10.    ப .

             [] Demo Dialog Box  ͻ
                                                       
                Cheeses              Consistency       
               Ŀ   Ŀ   
                [ ] HVarti         [*] Solid       
                [ ] Tilset         [ ] Runny       
                [ ] Jarlsberg      [ ] Melted      
                     
                                                       
                 Delivery instructions                 
                   
                                                       
                                   OK        Cancel  
                                       
             ͼ

     ப    ⠪          ᭮,  ᪮
祭 ப           ⭮  
짮⥫, 祬 祭 .


                   ⠭  祭 .

     ,   ᪮஢ 筮 ᫮ 
,   㦭 㧭  ᯮ짮 .   ᮧ 䥩
짮⥫, ⥯  室 ᮧ 䥩  ணࠬ.
 ࠢ  ᯮ,  ᫨        
ଠ  !
            ᤥ  2   :   ⠭
砫  祭  ⮢  ࠢ  ⨨ 
     祭,        뢠.
⨬,        㤥 ஢   
, ᫨    ᯥ譮. ᫨ 짮⥫ 訫 ⬥
 ,   㤥 ஢  , ᤥ 
 ६,    뫮 .
        Turbo Vision  ᤥ  . 
ணࠬ ࠢ    ଠ樨      
⨨.  짮⥫ 稢 ࠡ   ,
襩 ணࠬ  ॡ ஢,  ⬥   
뫮  ଠ쭮. ᫨  뫮 ⬥,   ࠡ⠥
 䨪樨  .  ᫨   ᯥ譮 ,  
          ⮩    ଥ,  
ன  뫠 ।  .
     ⮤ SetData  GetData ᯮ  ஢  
   .     ⮤ SetData
 GetData.
      㯯  (⠪    TDialog) 樠  
맮 SetData,   ।  , 뢠 ⮤ SetData
    ⮢.

     ਬ砭:       뢠   SetData    㯯,  
।   ,   ᮤন     
    㯯.   室 ᯮ  
   ⮢  ⮬  浪,        뫨
⠢  㯯.
      ⠪    ॡ ⠭ ࠢ ࠧ  
   ⮢.        ⮤
DataSize,    頥  ࠧ      .
     DataSize      ⮩  
,    ⥬ । 㪠⥫,  ⮡  ᫥饬
 ,     ᫥  稭.  ᫨  
       ࠧ,    ᫥騩
 㤥 ஢  .
     ᫨   ᮧ    ,     
 ,   ४ DataSize, SetData  GetData, ⠪
⮡   ࠡ뢠  ࠢ  祭.  冷 ࠡ⪨ 
ࠧ   楫      㪠.         㤥
 ᮮ饭, ᫨  ᤥ 訡.
     ᫥ 믮     ,    ணࠬ  
砫 㡥,        뫮  ⬥,  ⥬
맢 GetData  । ଠ樨   ணࠬ.
     ,  襬 ਬ   樠    浪  
ᨬ ,  ,  ᨬ , , ப
  128 ᨬ,      (OK   Cancel).  
2.1 ਢ  ॡ㥬  ⮣ .

   2.1.   ⮢ ࠢ  .

    
      ࠢ               ॡ㥬 
    
    ᨬ                    Word
    ⪠                                
    ᨬ                      Word
    ⪠                                
    ப                          string[128]
    ⪠                                
                                   
                                   
    

      ,      (⠪  ⪨  
), ᯮ ⮤ GetData,   ᫥  TView 
 祣  .   砥,     砥  
⠭ ,   ய ⪨  .
      ࠧ,   ᫥ ⮫쪮 3  
   :  ᨬ ,  ᨬ   ப
.  ᪠ ࠭,    ࠭ ᢮   
⨯ Word.    室  ப  ࠭   ப.   
⠭       쭮 ⨯:

               DialogData = record
                 CheckBoxData: Word;
                 RadioButtonData: Word;
                 InputLineData: string[128];
               end;

      ,    室 ᤥ -  樠஢
   ᪥  ணࠬ  (ਬ   MyApp.Init) ⠭
,   室        ,  
  ᯥ譮 .    ᪠  ᪠,  祬
-᪨! ᫥  ⮣,         ⨯,      
 ६:

               var
                 DemoDialogData: DialogData;

     ⥬   ப  믮    
 ᫥:

  Dialog^.SetData(DemoDialogData);
  Control := DeskTop^.ExecView(Dialog);
  if Control <> cmCancel then Dialog^.GetData(DemoDialogData);

        6  ப   ⮤ TMyApp.Init,  ⮡ ⠭
砫 祭   .

 { TVGUID16.PAS }

  with DemoDialogData do
  begin
    CheckboxData := 1;
    RadioButtonData := 2;
    InputLineData := 'Phone home.';
  end;


   . 2.11.         ⠭묨   砫묨
                            祭ﬨ.

             [] Demo Dialog Box  ͻ
                                                       
                Cheeses              Consistency       
               Ŀ   Ŀ   
                [ ] HVarti         [*] Solid       
                [ ] Tilset         [ ] Runny       
                [ ] Jarlsberg      [ ] Melted      
                     
                                                       
                 Delivery instructions                 
                  Phone home.                          
                                                       
                                   OK        Cancel  
                                       
             ͼ

        ,     ᤥ   ,
 ࠭,     뢠 , ᫨ ⮫쪮 
 ⬥ .
       饩,   﫨,  ᠫ ⥣஢
। Turbo  Pascal,  -  ,  ⮡    ணࠬ  ࠭﫠
ଠ,  뫠   ,  ଥ ,
    ᯮ짮  ⠭  祭 
  .   ⮬   ᮧ 讣  ᫠
ᥩ     ⤥  ६  ࠧ,   
    । ଠ樨, 頥 
   ࠧ ६.


                   ⪨   䫨.

      㬮砭 ⪨,  ᨬ    ᨬ  ,  
ॠ஢   ⪨        ⨢  -
㣮   .  ਬ,     
 뢠,  ⨢ ᨬ    室 
ࢮ ᨬ .    M    "Melted"    
 ⨢ ᨬ  Melted  砥 .
     ⥫쭮    ⪨              
᪨,   㯭 ⮫쪮 26 㪢  10 .   
ਢ  䫨⠬.  ਬ,  襬 쪮  
    ⠭       ⪨      "Cheeses",
"Consisteny"   ⢮ "Cheddr".
     -,   㤮  ⠭   㪢 ᫮ 
⪮ ,    ᥣ .   ࠧ 
䫨   "Cheeses"    "Consistency"  ਬ  ᤥ  
⪨   "Consistency",    㤭 .  㣮
ᯮᮡ -  .   ⪨ "Cheeses"   
  "Kind of Cheese"    ⪮ .
      ⮫쪮        ᯮᮡ    䫨⮢  
⪨ 蠬      ஢.      㣮
室,       ᯮ짮   䫨⮢,
᪠,  ⪮  ⮬ .  ⪨   
ᤥ 묨     .  ਬ,  
।饬 ਬ,  ᫨    ⪨    
 , ⨥   ६ ⨢樨 ᨬ 
 㤥 ⨢஢  "Consistency"   "Melted". 
㤥 㭪樮஢  ⪠  ⮫쪮 ᫨   
誨   Tab ३   "Consistency".
      㬮砭    ⪨  ⨢  ᥬ 
. ᫨    ⪨ ,    
Options ꥪ  ⠢   .  ( Options  
ofPostProcess ᭥      4.)  ਬ,  ᫨    
ᤥ ⪨      ᨬ   묨,  
  ⥫ ப  ⠢   :

               R.Assign(3, 3, 18, 6);
               B := New(PCheckBoxes, Init(R,
                 NewSItem('~H~varti',
                 NewSItem('~T~ilset',
                 NewSItem('~J~arlsberg',
                 nil)))
               ));
               B^.Options := B^.Options and not ofPostProcess;
               Insert(B);

      ⪨  H,  T  J    ⮫쪮  ᫨  
३       "Cheeses".    Alt-H,  Alt-T    Alt-J
த 㭪樮஢   ࠭.
     ,   ⪠     ⨢.   ⪠
   ⠭    ofPostProcess    ⮣,   ⮡
ࠡ  ⪮  (.  5).
     ⠭ ofPostProcess  砥,     짮⥫   
   ଠ    .   짮⥫
   ,   ३      ,  
- 䫨  ३  㣮.  筮,  ᫨ 짮⥫
,   ⪨    ⨢,      ⨢   ⮫쪮
쭮,   ਢ  ⮬,  ⪠  祣 
,     । ⨢ .
     訩 ᮢ,        - ⨢ 
     稥  䫨⮢.    㡫஢
⪨               ᥣ  ᯥ  
짮⥫ ᭮,  樨 㯭.


                    室   .

        稫 ࠡ   ,   뢠
Dispose(D, Done).  맮 Done ⠪    㤠      
 ࠭.  筮      뢠  ᠬ Done,  ᪮ 
 ⮬᪨,    뢠.


                    㣨  ࠢ.

      Dialogs   ।⠢   ⥫   ,
  ᯮ짮  ⮬ ਬ.     ᯮ
 ᯮᮡ:  ᮧ  , ⠢  
   砥 ᮮ⢥騥    .
 ࠧ  ⪮  뢠  㭪樨    ᯮ짮.  
⠫쭠 ଠ ਢ   13.


                        ᪨ ⥪.

     TStaticText -    ,    ⮡ࠦ
ப, ।  . ப -  ᫮, ᯮ 
אַ㣮쭨          ७ᮬ.      㤥
業஢, ᫨ ப 稭  Ctrl-C  ப  
ࠧ       Ctrl-M.      㬮砭   ⥪      
⨢஢  ꥪ  砥    .


                         ᬮ ᯨ᪠.

     TListViewer 뢮  ᯨ᮪        ᪮쪮  
짮⥫        ⮣  ᯨ᪠.  ListViewer
 ⢮   ᠬ ஫.
     TListViewer ।祭      ஥           
ᯮ ⤥쭮.      ࠡ뢠  ᯨ᮪,   ᠬ 
ᮤন ᯨ᪠.    ࠪ ⮤ GetText 㦠 
ᯨ᪠      ⮤   Draw.   ᫥   TListViewer   
४뢠 GetText  㧪 㠫 .


                            ᯨ᪠.

     TListBox ᫥   TListViewer.    TCollection,
   㪠⥫ﬨ   ப.  TListBox  ন
⮫쪮    ஫.  ਬ  ᯨ᪠ - ᯨ᮪ 롮
䠩  ⥣஢ ।  Turbo  Pascal    ᯨ᮪  䠩,
ᯮ㥬 TFileDialog  STDDLG.PAS.
      祭    ⠭        ᯨ᪠   㤮
ᯮ짮 ⨯    TListBoxRec,   ࠭ 㪠⥫ 
ᯨ᮪ ப    ᫮,  㪠뢠饥    ⥪騩 ࠭ 
ᯨ᪠.


                             .

     THistory ॠ ꥪ,  ࠡ⠥  ப  
易   ᯨ᪠.    ᨬ ५,  騩 ᫥
ப ,  짮⥫ 뢠 ᯨ᮪ । 祭 
⮩ ப        .   ।頥
 ୮ .
     ꥪ THistory ᯮ    ⥣஢
। Turbo Pascal.  ਬ,        File/Open  
Search/Find.


                   ⠭  .

      StdDlg   ᮤন   ।।    ,
뢠  TFileDialog.    ᯮ        
⥣஢   ।,      뢠   䠩.   TFileDialog
ᯮ  㣨 ꥪ⮢,     , ⠪ 
  StdDlg:

               TFileInputLine = object(TInputLine)
               TFileCollection = object(TSortedCollection)
               TSortedListBox = object(TListBox)
               TFileList = object(TSortedListBox)
               TFileInfoPane = object(TView)

     ᪮ 室      Dialogs  㯥,    
뢠  ꥪ ⠫쭮.
