- Помогите пожалуйста с сортировкой в Turbo Vision! Задание у меня, чтоб сортировало украинские символы "і", "ї", "є" в нужном порядке, а не в начале или конце...
- И еще, чтобы производился поиск, по полям где числа, в диапазоне...
ПОЖАЛУЙСТА помогите... кто знает как это сделать!!!

Вот прога (модуль), если поможет...


unit FX;
{---------------------------------------------------------------------------}
                                INTERFACE
{---------------------------------------------------------------------------}
uses App,CRT,Objects,Menus,Drivers,Views,StdDlg,DOS,Memory,Dialogs,MsgBox,colorsel;
{---------------------------------------------------------------------------}
type {ЋЎуЄв TWorkWin бвў(r)аоу а ¬Є(r)ўҐ ўiЄ­(r) § Ї(r)«(r)бЄ ¬Ё бЄа(r)«i­Ј  ¤«п
гЇа ў«i­­п ўЎг¤(r)ў ­Ё¬ ў ­м(r)Ј(r) (r)ЎуЄв(r)¬ TInterior}
    PWorkWin=^TWorkWin;
    TWorkWin=object(TWindow)
    Constructor Init(Bounds:Trect);
end;
{---------------------------------------------------------------------------}
{ЋЎуЄв TDlgwin бвў(r)аоу ¤i «(r)Ј(r)ўҐ ўiЄ­(r) ¤«п ўЁЎ(r)аг ०Ё¬  а(r)Ў(r)вЁ}
    PDlgWin=^TDlgWin;
    TDlgWin=object(TDialog)
    Procedure HandleEvent(var Event:TEvent);Virtual;
end;
{---------------------------------------------------------------------------}
{Ќ бвгЇ­Ё(c) (r)ЎуЄв (r)Ўб«гЈ(r)ўгу ў­гваiи­о з бвЁ­г а ¬Є(r)ў(r)Ј(r) ўiЄ­  TWorkWin.
‚i­ бвў(r)аоу бЄа(r)«о ўiЄ­(r) § § ЇЁб ¬Ё §  аеiў­(r)Ј(r) д (c)«  i § ¤(r)Ї(r)¬(r)Ј(r)о
¤i «(r)Ј(r)ў(r)Ј(r) ўiЄ­  TDlgWin гЇа ў«пу а(r)Ў(r)в(r)о § жЁ¬Ё § ЇЁб ¬Ё}
    PInterior=^TInterior;
    TInterior=object(TScroller)
    PS:PStringCollection;
    Location:Word;
    Constructor Init(var Bounds:Trect;HS,VS:PscrollBar);
    Procedure Draw;Virtual;
    Procedure ReadFile;
    Destructor Done;Virtual;
    Procedure HandleEvent(var Event:TEvent);Virtual;
end;
{---------------------------------------------------------------------------}
Tbook=object(TApplication){бвў(r)аоу (r)ЎуЄв-­ й ¤(r)Є ўi¤ TApplication}
{---------------------------------------------------------------------------}
    Procedure InitMenuBar;Virtual;{ЏҐаҐЄаЁў у бв ­¤ ав­Ё(c) ¬Ґв(r)¤ InitMenuBar}
    Procedure InitStatusLine;Virtual;{ЏҐаҐЄаЁў у¬ бв аЁ(c) ¬Ґв(r)¤ InitStatusLine ­(r)ўЁ¬}
    Procedure HandleEvent(var Event:TEvent);Virtual;
    Procedure AvtorA;
    Procedure AvtorV;
    Procedure FileSave;
    Procedure ChangeDir;
    Procedure ShallDOS;
    Procedure FileOpen;
    Procedure Work;
    Procedure Idle;Virtual;
    Constructor Init;
end;
{---------------------------------------------------------------------------}
const
{---------------------------------------------------------------------------}
    cmHelp=201;
    cmChDir=202;
    cmWork=203;
    cmDOS=204;
    cmCan=205;
    cmDelete=206;
    cmSearch=207;
    cmEdit=208;
    cmAdd=209;
    cmAvtorA=210;
    cmAvtorV=211;
    cmSearchnazva=212;
    cmSearchmarka=213;
    cmSearchrik=214;
    cmSearchobem=215;
    cmSearchcolir=216;
    cmSearchcina=217;
    cmSearchAll=218;

    WinCom1:TCommandSet=[cmSave,cmWork];
    WinCom2:TCommandSet=[cmOpen];

    Lnazva=20;
    Lmarka=16;
    Lrik=11;
    Lobem=10;
    Lcolir=12;
    Lcina=8;
    LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
{---------------------------------------------------------------------------}
type autopark=record
     nazva:string[Lnazva];
     marka:string[Lmarka];
     rik:string[Lrik];
     obem:string[Lobem];
     colir:string[Lcolir];
     cina:string[Lcina];
end;
{---------------------------------------------------------------------------}
var {auto:autopark}i:integer;
                   f:file of autopark;{” (c)«(r)ў  §¬i­­ }
                   Openf:Boolean;
                   Posh,Poz:array[1..200] of autopark;
{---------------------------------------------------------------------------}
                                 IMPLEMENTATION
{---------------------------------------------------------------------------}
Constructor Tbook.init;
{---------------------------------------------------------------------------}
var i:integer;
begin
    for i:=1 to 63 do
    case i of
         1:getpalette^[1]:=#$7e;    {‚iЄ­(r) § ­Ґўi¤ЄаЁвЁ¬ д (c)«(r)¬}
         2:getpalette^[2]:=#$10f;   {ЌЁ¦­п в  ўҐае­п Ї ­Ґ«м}
         3:getpalette^[3]:=#$10f;   {’ҐЄбв ­Ґ¤(r)бвгЇ­Ёе Їг­Євiў ¬Ґ­о}
         4:getpalette^[4]:=#$10e;   {Љ« ўiиi Ўi«п Є(r)¬ ­¤}
         5:getpalette^[5]:=#$10e;   {‚Ё¤i«Ґ­i Є­(r)ЇЄЁ}
         6:getpalette^[6]:=#$10f;   {ЏаЁ ­ вЁбЄ ­­i ­  ­Ґ¤(r)бвгЇ­г Є­(r)ЇЄг}
         7:getpalette^[7]:=#$8e;    {‘Ё¬ў(r)« Ўi«п ўЁ¤i«Ґ­Ёе Є­(r)Ї(r)Є}
         9:getpalette^[9]:=#$10e;   {ђ ¬Є  § д (c)« }
         10:getpalette^[10]:=#$10f; {„Ґв «i а ¬ЄЁ}
         11:getpalette^[11]:=#$10f; {Џ(r)«(r)бЁ Їа(r)ЄагвЄЁ}
         12:getpalette^[12]:=#$10e; {‘ваi«ЄЁ Їа(r)ЄагвЄЁ}
         13:getpalette^[13]:=#$10f; {”(r)­ i ⥪бв а(r)Ў(r)з(r)х (r)Ў« бвi}
         14:getpalette^[14]:=#$10e; {”(r)­ i ⥪бв ўЁ¤i«Ґ­(r)Ј(r) § ЇЁбг}
         33:getpalette^[33]:=#$10e; {ђ ¬Є  ¤i «(r)Ј(r)ў(r)Ј(r) ўiЄ­ }
         34:getpalette^[34]:=#$10f; {ЇаЁ ­ вЁбЄ ­­i ­  ўiЄ­(r)}
         35:getpalette^[35]:=#$10f; {Џ(r)«(r)бЁ Їа(r)ЄагвЄЁ ¤i «(r)Ј(r)ў(r)Ј(r) ўiЄ­ }
         36:getpalette^[36]:=#$10e; {‘ваi«ЄЁ Їа(r)ЄагвЄЁ ¤i «(r)Ј(r)ў(r)Ј(r) ўiЄ­ }
         37:getpalette^[37]:=#$10e; {”(r)­ ¬Ґ­о}
         38:getpalette^[38]:=#$10f; {ЌҐ ЄвЁў­i ­ §ўЁ}
         39:getpalette^[39]:=#$10e; {ЂЄвЁў­i ­ §ўЁ}
         40:getpalette^[40]:=#$10e;
         41:getpalette^[41]:=#$6f;  {Љ­(r)ЇЄ }
         42:getpalette^[42]:=#$6f;  {Љ­(r)ЇЄ }
         43:getpalette^[43]:=#$6e;  {ЂЄвЁў­  Є­(r)ЇЄ }
         44:getpalette^[44]:=#$8f;
         45:getpalette^[45]:=#$6e;
         46:getpalette^[46]:=#$10e; {‡ ¤­пп з бвм Є­(r)ЇЄЁ}
         50:getpalette^[50]:=#$6e;  {Џ(r)«Ґ ўўҐ¤Ґ­­п}
         51:getpalette^[51]:=#$6f;  {— бвЁ­  Ї(r)«п ўўҐ¤Ґ­­п}
         52:getpalette^[52]:=#$6f;
         53:getpalette^[53]:=#$10f; {‘ваi«Є }
         54:getpalette^[54]:=#$10e; {Џ(r)«(r)бЁ Ўi«п бваi«ЄЁ}
         55:getpalette^[55]:=#$10f; {Џ(r)«(r)бЁ Їа(r)ЄагвЄЁ ўiЄ(r)­жп}
         56:getpalette^[56]:=#$10e; {‘ваi«ЄЁ Їа(r)ЄагвЄЁ}
         57:getpalette^[57]:=#$6f;  {”(r)­ ¬Ґ­о д (c)«iў}
         58:getpalette^[58]:=#$6e;  {ЂЄвiў­  Є­(r)ЇЄ }
         59:getpalette^[59]:=#$6f;  {ЌҐ ЄвЁў­  Є­(r)ЇЄ }
         60:getpalette^[60]:=#$0e;  {ЏҐаҐЈ(r)а(r)¤Є }
         61:getpalette^[61]:=#$6e;
    end;
    inherited init;
end;
{---------------------------------------------------------------------------}
Constructor TworkWin.Init(Bounds:Trect);
{---------------------------------------------------------------------------}
    {‘вў(r)७­п ўiЄ­  ¤ ­Ёе}
    var HS,VS:PScrollBar;{Џ(r)«(r)бЁ ўЄ §iў­ЁЄЁ}
        Interior:PInterior;{‚Є §iў­ЁЄ ­  ЄҐагу¬Ґ вҐЄбв(r)ўҐ ўiЄ­(r)}
begin
    Twindow.Init(Bounds,'‚ЁЎҐаiвм Ї(r)ваiЎ­Ё(c) § ЇЁб. ESC - ЇҐаҐеi¤ ¤(r) ¤i «(r)Јг',0); {‘вў(r)аоу¬ ­(r)ўҐ ўiЄ­(r) § а ¬Є(r)о}
    GetClipRect(Bounds);{ЋваЁ¬гу¬(r) ў Bounds Є(r)(r)а¤Ё­ вЁ ¬i­i¬ «м­(r)х
    ЇҐаҐ¬ «м(r)ўгу¬(r)х з бвЁ­Ё ўiЄ­ }
    Bounds.Grow(-1,-1);{‚бв ­(r)ў«оу¬(r) а(r)§¬iаЁ ўiЄ­  § ⥪бв(r)¬}
    {‚¬ЁЄ у¬(r) бв ­¤ ав­i Ї(r) а(r)§¬iаг i Ї(r)«(r)¦Ґ­­о Ї(r)«(r)бЁ-ўЄ §iў­ЁЄЁ}
    VS:=StandardScrollBar(sbVertical+sbHandleKeyBoard);
    HS:=StandardScrollBar(sbHorizontal+sbHandleKeyBoard);
    {‘вў(r)аоу¬ ⥪бв(r)ўҐ ўiЄ­(r):}
    Interior:=New(PInterior,Init(Bounds,HS,VS));
    Insert(Interior);{‚Є«оз у¬ (c)(r)Ј(r) ў (r)б­(r)ў­Ґ ўiЄ­(r)}
end;
{---------------------------------------------------------------------------}
Procedure TDlgWin.HandleEvent;
{---------------------------------------------------------------------------}
begin
    Inherited HandleEvent(Event);
    if Event.What=evCommand then EndModal(Event.Command);
end;
{---------------------------------------------------------------------------}
Procedure Tbook.FileOpen;
{---------------------------------------------------------------------------}
    {‚i¤ЄаЁў у д (c)« ¤ ­Ёе}
    var PF:PFileDialog;{„i «(r)Ј(r)ўҐ ўiЄ­(r) ўЁЎ(r)аг д (c)« }
        Control:word;
        s:PathStr;
begin
         {‘вў(r)аоу¬(r) ҐЄ§Ґ¬Ї«па ¤Ё­ ¬iз­(r)Ј(r) (r)ЎуЄв :}
         New(PF,Init('*.dat','‚ЁЎҐаiвм Ї(r)ваiЎ­Ё(c) д (c)«:','I¬"п д (c)« ',fdOpenButton,0));
         {‡  ¤(r)Ї(r)¬(r)Ј(r)о ­ бвгЇ­(r)Ј(r) (r)ЇҐа в(r)а  ўiЄ­(r) ўЁў(r)¤Ёвмбп ­  ҐЄа ­
         i १г«мв в а(r)Ў(r)вЁ ЄаЁбвгў з  § ­Ё¬ Ї(r)¬iй увмбп ў §¬i­­г Control:}
         Control:=DeskTop^.ExecView(PF);
         {Ђ­ «i§гу¬(r) १г«мв в § ЇЁвг:}
              case Control of StdDlg.cmFileOpen,cmOk:
                   begin {Љ(r)аЁбвгў з ўЄ §гу i¬п д (c)« :}
                        PF^.GetFileName(s);{s ¬iбвЁвм i¬п д (c)« :}
                        Assign(f,s);   {ўi¤ЄаЁвЁ д (c)«}
                        {$I-}
                        Reset(f);
                        if IoResult<>0 then
                        Rewrite(f);
                        Openf:=IoResult=0;
                        {$I+}
                        if Openf then
                             Begin
                                  DisableCommands(WinCom2);
                                  EnableCommands(WinCom1);
                                  Work;{ЏҐаҐе(r)¤Ё¬(r) ¤(r) а(r)Ў(r)вЁ}
                             end;
                   end;
              end;
         Dispose(PF,Done) {‡­Ёйгу ҐЄ§Ґ¬Ї«па}
end;
{---------------------------------------------------------------------------}
Procedure Tbook.FileSave;
{---------------------------------------------------------------------------}
begin
         Close(f);
         Openf:=False;
         EnableCommands(WinCom2);
         DisableCommands(WinCom1);
end;
{---------------------------------------------------------------------------}
Procedure Tbook.ChangeDir;
{---------------------------------------------------------------------------}
    var PD:PChDirDialog;{„i «(r)Ј(r)ўҐ ўiЄ­(r) §¬i­Ё Є в «(r)Ј }
        Control:Word;
begin
         New(Pd,Init(cdNormal,0));       {бвў(r)аоу¬ ¤i «(r)Ј(r)ўҐ ўiЄ­(r)}
         Control:=DeskTop^.ExecView(PD); {‚ЁЄ(r)аЁбв(r)ўгу¬ ўiЄ­(r)}
         Chdir(PD^.DirInput^.data^);     {‚бв ­(r)ў«оу¬(r) ­(r)ўЁ(c) Є в «(r)Ј}
         Dispose(PD,Done)                {‚Ё¤ «пу¬(r) ўiЄ­(r) § Єгзi}
end;
{---------------------------------------------------------------------------}
Procedure Tbook.ShallDOS;
{---------------------------------------------------------------------------}
    const txt='„«п Ї(r)ўҐа­Ґ­­п ўўҐ¤iвм EXIT ў ўi¤Ї(r)ўi¤м'+' ­  § ЇЁв DOS...';
begin
    DoneEvents;         {‡ ЄаЁў у (r)Ўа(r)Ў«оў з Ї(r)¤i(c)}
    DoneVideo;          {‡ ЄаЁвЁ ¬(r)­iв(r)а ҐЄа ­ }
    DoneMemory;         {‡ ЄаЁвЁ ¬(r)­iв(r)а Ї ¬пвi}
    SetMemTop(HeapPtr); {‡ўi«м­ЁвЁ Єгзг}
    Writeln(txt);       {ЋЇ(r)ўiбвЁвЁ Їа(r) ўЁеi¤}
    SwapVectors;        {‚бв ­(r)ўЁвЁ бв ­¤ ав­i ўҐЄв(r)аЁ}
    {ЏҐаҐ¤ вЁ гЇа ў«i­­п Є(r)¬ ­¤­(r)¬г Їа(r)жҐб(r)аг DOS:}
    Exec(GetEnv('COMSPEC'),'');
    {Џ(r)ўҐа­гвЁбп § DOS:}
    SwapVectors;        {Џ(r)­(r)ўЁвЁ ўҐЄв(r)аЁ}
    SetMemTop(HeapEnd); {Џ(r)­(r)ўЁвЁ Єгзг}
    InitMemory;         {‚i¤ЄаЁвЁ ¬(r)­iв(r)а Ї ¬пвi}
    InitVideo;          {‚i¤ЄаЁвЁ ¬(r)­iв(r)а ҐЄа ­ }
    Initevents;         {‚i¤ЄаЁвЁ (r)Ўа(r)Ў«оў з Ї(r)¤i(c)}
    InitSysError;       {‚i¤ЄаЁвЁ (r)Ўа(r)Ў«оў з Ї(r)¬Ё«(r)Є}
    Redraw              {Џ(r)­(r)ўЁвЁ ўЁ¤ ҐЄа ­ }
end;
{---------------------------------------------------------------------------}
Procedure Tbook.AvtorA;
{---------------------------------------------------------------------------}
    const txt:array [0..1] of string[40]=(
           ' ‚ЁЄ(r)­ ў:бв㤥­в ЈагЇЁ ЂЉ‘ 1-7 ',
           ' ђгбб Є(r)ўбмЄЁ(c) „¬Ёва(r) Ћ«ҐЄб ­¤а(r)ўЁз ');
    var r:TRect;{§ ¤ ­­п Є(r)(r)а¤Ё­ в Їап¬(r)Єгв­.¤i«п­ЄЁ ҐЄа ­ ,¤«п а(r)§в.Avtor}
        d:PDLgWin;
        i:integer;
        Control:Word;
begin
    r.assign(24,10,63,14);
    d:=New(PDlgWin,Init(R,' Ђўв(r)а Їа(r)Ја ¬Ё: '));
    with d^ do
         for i:=0 to 1 do
         begin
              r.Assign(1,1+i,38,2+i);
              Insert(New(PStaticText,Init(R,#3+Txt[i])));
         end;
    DeskTop^.ExecView(d);
end;
{---------------------------------------------------------------------------}
Procedure Tbook.AvtorV;
{---------------------------------------------------------------------------}
    const txt:array [0..1] of string[40]=(
           ' ЏҐаҐўiаЁў ўЁЄ« ¤ з: ',
           ' Ѓа(r)ўзҐ­Є(r) Ќ в «iп ЌҐбв(r)аiў­  ');
    var r:TRect;{§ ¤ ­­п Є(r)(r)а¤Ё­ в Їап¬(r)Єгв­.¤i«п­ЄЁ ҐЄа ­ ,¤«п а(r)§в.Avtor}
        d:PDLgWin;
        i:integer;
        Control:Word;
begin
    r.assign(24,10,63,14);
    d:=New(PDlgWin,Init(R,' ‚ЁЄ« ¤ з: '));
    with d^ do
         for i:=0 to 1 do
         begin
              r.Assign(1,1+i,38,2+i);
              Insert(New(PStaticText,Init(R,#3+Txt[i])));
         end;
    DeskTop^.ExecView(d);
end;
{---------------------------------------------------------------------------}
Procedure Tbook.Idle;{Ј(r)¤Ё­­ЁЄ,¤ в }
{---------------------------------------------------------------------------}
    const Old:byte=0;
          Dt=1;
          days:array [0..6] of String[9]=('ЌҐ¤.','Џ(r)­','‚iўв.','‘Ґа',
                                          '—Ґвў.','Џпв­.','‘гЎ.');
    var Ho,Mi,Se,S100:word;
        y,m,d,dow,xx,yy:Word;
    Function timestr(K:word):string;
         var Ss:string[2];
    begin
         Str(K,Ss);
         if K<10 then Ss:='0'+Ss;
         Timestr:=Ss
    end;
begin
    xx:=wherex;
    yy:=wherey;
    gettime(ho,mi,se,s100);
    if (se mod dt=0) and (old<>se) then
    begin
         old:=se;
         textcolor(white);
         textbackground(8);
         gotoxy(72,1);{а(r)§в игў ­­п з бг ­  ҐЄа ­i}
         write(timestr(ho)+':'+timestr(mi)+':'+timestr(se));
    end;
    GetDate(y,m,d,dow);
    GotoXY(50,1);
    Writeln('',days[dow],',',d:0,'/',m:0,'/',y:0);
    gotoXY(xx,yy);
end;
{---------------------------------------------------------------------------}
Constructor TInterior.Init(var Bounds:Trect;HS,VS:PScrollBar);
{---------------------------------------------------------------------------}
    {‘вў(r)аоу ўiЄ­(r) бЄа(r)«Ґа }
begin
    Inherited Init(Bounds,HS,VS);
    ReadFile;
    GrowMode:=gfGrowHiX+gfGrowHiY;
    SetLimit(LLine,PS^.Count);
end;
{---------------------------------------------------------------------------}
Destructor TInterior.Done;
{---------------------------------------------------------------------------}
begin
    Dispose(PS,Done);
    Inherited Done;
end;
{---------------------------------------------------------------------------}
Procedure TInterior.ReadFile;
{---------------------------------------------------------------------------}
    var k:integer;
        s,shapka:String;
        data:autopark;
        t:text;
begin
    PS:=New(PStringCollection,Init(100,10));
    seek(f,0);
    shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
    PS^.insert(NewStr(shapka));
    while not (EOF(f) or LowMemory) do
    begin
         read(f,data);
         with data do
         begin
              s:=nazva;
              while Length(s)<Lnazva do s:=s+' ';
              s:=s+marka;
              while Length(s)<Lnazva+Lmarka do s:=s+' ';
              s:=s+rik;
              while Length(s)<Lnazva+Lmarka+Lrik do s:=s+' ';
              s:=s+obem;
              while Length(s)<Lnazva+Lmarka+Lrik+Lobem do s:=s+' ';
              s:=s+colir;
              while Length(s)<Lnazva+Lmarka+Lrik+Lobem+Lcolir do s:=s+' ';
              s:=s+cina;
         end;
    if s<>' ' then PS^.Insert(NewStr(S));
    end;
    Location:=0;
end;
{---------------------------------------------------------------------------}
Procedure TInterior.Draw;
{---------------------------------------------------------------------------}
    {‚Ёў(r)¤Ёвм ¤ ­i ў ўiЄ­(r) ЇҐаҐЈ«п¤г}
    var n{Ї(r)в(r)з­  бва(r)Є  ҐЄа ­ },k:integer;{Ї(r)в(r)з­  бва(r)Є  ¬ бЁў }
        B:TDrawBuffer;
        Color:Byte;
        p:PString;
begin
    if Delta.Y>Location then Location:=Delta.Y;
    if Location>Delta.Y+pred(Size.Y) then Location:=Delta.Y+Pred(Size.Y);
    for n:=0 to pred(Size.Y) do
    {Size.Y - Љi«мЄiбвм бва(r)Є ўiЄ­ }
    begin
         k:=Delta.Y+n;
         if k=Location then Color:=GetColor(2)
                       else Color:=GetColor(1);
         MoveChar(B,' ',Color,Size.X);
         if k<pred(PS^.Count) then
         begin
              p:=PS^.At(k);
              MoveStr(B,Copy(p^,Delta.X,size.X),Color);
         end;
         WriteLine(0,N,Size.X,1,B)
    end;
    EnableCommands(WinCom1);
end;
{---------------------------------------------------------------------------}
Function Control:Word;
{---------------------------------------------------------------------------}
    {ЋваЁ¬гу Є(r)¬ ­¤г i§ (r)б­(r)ў­(r)Ј(r) ¤Ё «(r)Ј(r)ў(r)Ј(r) ўiЄ­ }
    const L=2;
          Dy=2;
          But:array [0..4] of string[20]={Ќ ЇЁбЁ ­  Є­(r)ЇЄ е}
          ('~1~ ‚Ёеi¤','~2~ ‡­ЁйЁвЁ','~3~ ‡­ (c)вЁ','~4~ ‡¬i­ЁвЁ','~5~ „(r)Ў ўЁвЁ');
    var R:TRect;
        D:PDlgWin;
        k:Integer;
Begin
    R.Assign(42,3,69,16);
    D:=New(PDlgWin,Init(R,'ЊҐ­о:'));
    with D^ do
    begin
         for k:=0 to 4 do
         begin
              R.Assign(1,2+k*Dy,25,2+k*Dy+L);
              Insert(New(PButton,
              Init(R,But[k],cmCan+k,bfNormal)));
         end;
         SelectNext(False);{ЂЄвЁўгу¬(r) ЇҐаиг Є­(r)ЇЄг}
    end;
    Control:=DeskTop^.ExecView(D);{‡¤i(c)б­оу¬(r) ¤i «(r)Ј}
end;
{---------------------------------------------------------------------------}
Function Poshuk:Word;
{---------------------------------------------------------------------------}
    const L=2;
          Dy=2;
          But:array[0..6] of String[20]={­ ЇЁб ­  Є­(r)ЇЄ е}
          ('~1~ ‡  ­ §ў(r)о ' ,'~2~ ‡  ¬ аЄ(r)о' , '~3~ ‡  а(r)Є(r)¬ ',
          '~4~ ‡  (r)Ў"н¬(r)¬','~5~ ‡  Є(r)«м(r)а(r)¬','~6~ ‡  жi­(r)о','~7~ ‡ Ј «м­Ё(c) ');
    var R:TRect;
        D:PDlgWin;
        k:Integer;
begin
    R.Assign(42,3,69,20);
    D:=New(PDlgWin,Init(R,'ЊҐ­о Ї(r)игЄ:'));
    with D^ do
    begin
         for k:=0 to 6 do
         begin{ўбв ў«пу¬(r) Є­(r)ЇЄЁ}
              R.Assign(1,2+k*Dy,25,2+k*Dy+L);
              Insert(New(PButton,Init(R,But[k],cmSearchnazva+k,bfNormal)));
         end;
         SelectNext(False);{ ЄвЁўгу¬(r) ЇҐаиг Є­(r)ЇЄг}
    end;
    Poshuk:=DeskTop^.ExecView(D);{ўЁЄ(r)­гу¬(r) ¤i «(r)Ј}
end;
{---------------------------------------------------------------------------}
Procedure TInterior.HandleEvent;
{---------------------------------------------------------------------------}
Procedure DeleteItem;
{---------------------------------------------------------------------------}
    var D:integer;
        PStr:Pstring;
        s:String;
        data:autopark;
begin
    PStr:=PS^.At(Location);{ЋваЁ¬гу¬(r) Ї(r)з­Ё(c) § ЇЁб}
    s:=copy(Pstr^,1,Lnazva);
    seek(f,0);
    D:=-1;                            {D - Ќ(r)¬Ґа § ЇЁб  ў д (c)«i}
    repeat                            {–ЁЄ« Ї(r)игЄг Ї(r) бЇiўЇ ¤ ­­о Ї(r)«п Priz:}
    inc(D);
    read(f,data);
    with data do while Length(nazva)<Lnazva do nazva:=nazva+' '
    until data.nazva=s;
    seek(f,pred(FileSize(f)));
    read(f,data);                 {зЁв у¬(r) (r)бв ­­i(c) § ЇЁб}
    seek(f,D);
    write(f,data);                {Џ(r)¬iй у¬(r) хх ­  ¬iбжҐ ўЁ¤ «пу¬(r)х}
    seek(f,pred(FileSize(f)));
    truncate(f);                  {‚Ё¤ «пу¬(r) (r)бв ­­i(c) § ЇЁб}
    with PS^ do D:=IndexOf(At(Location));
    PS^.AtFree(D);                    {‚Ё¤ «пу¬ бва(r)Єг § Є(r)«ҐЄжiх}
    Draw;                              {ЋЎ­(r)ў«пу¬(r) ўiЄ­(r)}
end;
{---------------------------------------------------------------------------}
Procedure AddItem(Edit:Boolean);
{---------------------------------------------------------------------------}
    const y=1;
          dy=2;
          LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var data:autopark;
        R:TRect;
        InWin:PDialog;
        Bnazva,Bmarka,Brik,Bobem,Bcolir,Bcina:PInputLine;
        Control:Word;
        OldCount:Word;
        s:String;
        p:PString;
begin
    Seek(f,fileSize(f));{„(r)Ў ў«пу¬ § ЇЁбЁ ў Єi­Ґжм д (c)« }
    repeat{–ЁЄ« ўў(r)¤  § ЇЁбiў}
    if Edit then{ѓ(r)вгу¬(r) § Ј «(r)ў(r)Є} s:='ђҐ¤ Јгў ­­п:'
            else
            begin
              Str(Filesize(f)+1,s);
              s:='‚ў(r)¤Ёвмбп § ЇЁб:';
            end;
            FillChar(data,SizeOf(data),' ');{‡ Ї(r)ў­пу¬(r) Ї(r)«п Їа(r)Ўi« ¬Ё}
            R.Assign(15,2,39,19);
            InWin:=New(PDialog,Init(R,s));{‘вў(r)аоу¬(r) ўiЄ­(r)}
            with InWin^ do
            begin{”(r)а¬гу¬(r) ўiЄ­(r)}
              R.Assign(2,y+1,22,y+2);
              Bnazva:=New(PInputLine,Init(R,Lnazva));
              Insert(Bnazva);
              R.Assign(2,y,22,y+1);
              Insert(New(PLabel,Init(R,'Ќ §ў ',Bnazva)));
              R.Assign(2,y+dy+1,22,y+dy+2);
              Bmarka:=New(PInputLine,Init(R,Lmarka));
              Insert(Bmarka);
              R.Assign(2,y+dy,22,y+dy+1);
              Insert(New(PLabel,Init(R,'Њ аЄ ',Bmarka)));
              R.Assign(2,y+2*dy+1,22,y+2*dy+2);
              Brik:=New(PInputLine,Init(R,Lrik));
              Insert(Brik);
              R.Assign(2,y+2*dy,22,y+2*dy+1);
              Insert(New(PLabel,Init(R,'ђiЄ',Brik)));
              R.Assign(2,y+3*dy+1,22,y+3*dy+2);
              Bobem:=New(PInputLine,Init(R,Lobem));
              Insert(Bobem);
              R.Assign(2,y+3*dy,22,y+3*dy+1);
              Insert(New(PLabel,Init(R,'ЋЎ"Ґ¬',Bobem)));
              R.Assign(2,y+4*dy+1,22,y+4*dy+2);
              Bcolir:=New(PInputLine,Init(R,Lcolir));
              Insert(Bcolir);
              R.Assign(2,y+4*dy,22,y+4*dy+1);
              Insert(New(PLabel,Init(R,'Љ(r)«iа',Bcolir)));
              R.Assign(2,y+5*dy+1,22,y+5*dy+2);
              Bcina:=New(PInputLine,Init(R,Lcina));
              Insert(Bcina);
              R.Assign(2,y+5*dy,22,y+5*dy+1);
              Insert(New(PLabel,Init(R,'–i­ ',Bcina)));
              {‚бв ў«пу¬(r) ¤ўi Є(r)¬ ­¤­i Є­(r)ЇЄЁ}
              R.Assign(2,y+6*dy+1,12,y+6*dy+3);
              Insert(New(PButton,Init(R,'‚ўҐбвЁ',cmOK,bfDefault)));
              R.Assign(2+10,y+6*dy+1,12+10,y+6*dy+3);
              Insert(New(Pbutton,Init(R,'‚Ёеi¤',cmCancel,BfNormal)));
              SelectNext(False);{ ЄвЁўгу¬(r) ЇҐаиг Є­(r)ЇЄг}
            end;{Љi­Ґжм д(r)а¬гў ­­п ўiЄ­ }
            if Edit then With data do
            begin{ѓ(r)вгу¬(r) Ї(r)з вЄ(r)ўЁ(c) ⥪бв:}
              p:=PS^.At(Location);{—Ёв у¬(r) ¤ ­i § § ЇЁбг}
              s:=p^;
              nazva:=copy(s,1,Lnazva);
              marka:=copy(s,succ(Lnazva),Lmarka);
              rik:=copy(s,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(s,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(s,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(s,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
              InWin^.SetData(data);{‚бв ў«пу¬ ⥪бв ў Ї(r)«п ўў(r)¤г}
            end;
            control:=DeskTop^.ExecView(InWin);{Џа(r)ў(r)¤Ё¬(r) ¤i «(r)Ј}
            if Control=cmOk then with data do
            begin
              if Edit then DeleteItem;{‡­Ёйгу¬(r) бв аЁ(c) § ЇЁб}
              nazva:=Bnazva^.data^;
              marka:=Bmarka^.data^;
              rik:=Brik^.data^;
              obem:=Bobem^.data^;
              colir:=Bcolir^.data^;
              cina:=Bcina^.data^;
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              OldCount:=PS^.Count;{Џ(r)ЇҐаҐ¤­п Є-бвм § ЇЁбiў}
              PS^.Insert(NewStr(s));{„(r)Ў ў«пу¬ ў Є(r)«ҐЄжiо}
              {ЏҐаҐўiапу¬(r) ¤(r)Ў ў«Ґ­­п}
              if OldCount<>Ps^.Count then Write(f,data);
              {’ Є - ¤(r)Ў ў«пу¬ ў д (c)«}
            end
    until Edit or (Control=cmCancel);
    Draw;
end;
{---------------------------------------------------------------------------}
Procedure SearchItem;
{---------------------------------------------------------------------------}
{˜гЄ у¬(r) Ї(r)ваiЎ­Ё(c) Ґ«Ґ¬Ґ­в}
{---------------------------------------------------------------------------}
Function UpString(s:string):String;
{---------------------------------------------------------------------------}
{ЏҐаҐвў(r)аоу¬(r) бва(r)Єг ў ўҐае­i(c) аҐубва}
    var k:integer;
begin
    for k:=1 to Length(s) do
    if s[k] in ['a'..'z'] then
    s[k]:=chr(ord('A')+ord(s[k])-ord('a'))
                          else
    if s[k] in [' '..'Ї'] then
    s[k]:=chr(ord('Ђ')+ord(s[k])-ord(' '))
                          else
    if s[k] in ['а'..'п'] then
    s[k]:=chr(ord('ђ')+ord(s[k])-ord('а'));
    UpString:=s;
end;
{---------------------------------------------------------------------------}
Procedure NotFound;
{---------------------------------------------------------------------------}
begin
    MessageBox('‡  ¤ ­Ё¬ § ЇЁв(r)¬ ­Ґ §­ (c)¤Ґ­(r) ¦(r)¤­(r)Ј(r) § ЇЁбг',nil,mfInformation or mfOkButton);
end;
{---------------------------------------------------------------------------}
Procedure Searchnazva;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,8,45,15);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ § ЇЁбг...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'§  ­ §ў(r)о:',p)));
         R.Assign(2,4,12,6);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,4,28,6);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=0;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if pos(UpString(s),Upstring(Data.nazva)) <> 0 then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0] := chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)Ў ў«пҐ¬ ў Є(r)«ҐЄжЁо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=0;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchmarka;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,8,45,15);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ § ЇЁбг...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'§  ¬ аЄ(r)о:',p)));
         R.Assign(2,4,12,6);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,4,28,6);
         Insert(New (PButton,Init(R,'‚Ёеi¤' ,cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if pos(UpString(s),Upstring(Data.marka)) <> 0 then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchrik;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p,p2:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,7,45,16);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ §  а(r)Є(r)¬...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3) ;
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'ўi¤:',p)));

         R.Assign(2,4,28,5);
         p2:=New(PInputLine,Init(R,20));
         Insert(p2);
         R.Assign(1,3,21,4);
         Insert(New(PLabel,Init(R,'¤(r):',p2)));

         R.Assign(2,6,12,8);
         Insert (New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,6,28,8);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if UpString(s)=copy(Upstring(Data.rik),1,length(s)) then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchobem;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p,p2:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,7,45,16);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ §  (r)Ў"н¬(r)¬...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'ўi¤:',p)));

         R.Assign(2,4,28,5);
         p2:=New(PInputLine,Init(R,20));
         Insert(p2);
         R.Assign(1,3,21,4);
         Insert(New(PLabel,Init(R,'¤(r):',p2)));

         R.Assign(2,6,12,8);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,6,28,8);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext (False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if UpString(s)=copy(Upstring(Data.obem),1,length(s)) then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchcolir;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,8,45,15);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ § ЇЁбг...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'§  Є(r)«м(r)а(r)¬:',p)));
         R.Assign(2,4,12,6);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,4,28,6);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if UpString(s)=copy(Upstring(Data.colir),1,length(s)) then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchcina;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p,p2:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        col:byte;
        k:Word;
begin
    R.Assign(15,7,45,16);
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ §  жi­(r)о...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'ўi¤:',p)));

         R.Assign(2,4,28,5);
         p2:=New(PInputLine,Init(R,20));
         Insert(p2);
         R.Assign(1,3,21,4);
         Insert(New(PLabel,Init(R,'¤(r):',p2)));

         R.Assign(2,6,12,8);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,6,28,8);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,succ(Lnazva),Lmarka);
              rik:=copy(ss,succ(Lnazva+Lmarka),Lrik);
              obem:=copy(ss,succ(Lnazva+Lmarka+Lrik),Lobem);
              colir:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem),Lcolir);
              cina:=copy(ss,succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir),Lcina);
         end;
         if UpString(s)=copy(Upstring(Data.cina),1,length(s)) then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0]:=chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
Procedure Searchall;
{---------------------------------------------------------------------------}
    const LLine=Lnazva+Lmarka+Lrik+Lobem+Lcolir+Lcina;
    var InWin:PDialog;
        R:TRect;
        s,ss,shapka:String;
        p:PInputLine;
        pp:Pstring;
        Data:autopark;
        kk,ii,kp,zap:integer;
        b1:TDrawBuffer;
        k:Word;
begin
    R.Assign(15,8,45,15) ;
    InWin:=New(PDialog,Init(R,'Џ(r)игЄ § ЇЁбг...'));
    with InWin^ do
    begin
         R.Assign(2,2,28,3);
         p:=New(PInputLine,Init(R,20));
         Insert(p);
         R.Assign(1,1,21,2);
         Insert(New(PLabel,Init(R,'‡ Ј «м­Ё(c):',p)));
         R.Assign(2,4,12,6);
         Insert(New(PButton,Init(R,'‡­ (c)вЁ',cmOk,bfDefault)));
         R.Assign(18,4,28,6);
         Insert(New(PButton,Init(R,'‚Ёеi¤',cmCancel,bfNormal)));
         SelectNext(False);
    end;
    if DeskTop^.ExecView(InWin)=cmCancel then exit;
    s:=p^.Data^;
    Location:=1;
    kp:=0;
    kk:=0;
    for i:=1 to pred(PS^.Count) do
    begin
         pp:=PS^.At(i);
         ss:=pp^;
         with data do
         begin
              nazva:=copy(ss,1,Lnazva);
              marka:=copy(ss,Lnazva+1,Lmarka);
              rik:=copy(ss,Lnazva+Lmarka+1,Lrik);
              obem:=copy(ss,Lnazva+Lmarka+Lrik+1,Lobem);
              colir:=copy(ss,Lnazva+Lmarka+Lrik+Lobem+1,Lcolir);
              cina:=copy(ss,Lnazva+Lmarka+Lrik+Lobem+Lcolir+1,Lcina);
         end;
         if (UpString(s)=copy(Upstring(Data.nazva),1,length(s))) or
            (UpString(s)=copy(Upstring(Data.marka),1,length(s))) or
            (UpString(s)=copy(Upstring(Data.rik),1,length(s))) or
            (UpString(s)=copy(Upstring(Data.obem),1,length(s))) or
            (UpString(s)=copy(Upstring(Data.colir),1,length(s))) or
            (UpString(s)=copy(Upstring(Data.cina),1,length(s)))
         then
         begin
              kk:=kk+1;
              Posh[kk]:=Data;
         end;
         kp:=kp+1;
         Poz[kp]:=Data;
    end;
    if kk<>0 then
    begin
         zap:=kp;
         i:=0;
         PS:=New(PStringCollection,Init(100,10));
         shapka:='       Ќ §ў        |     Њ аЄ      |   ђiЄ    |  ЋЎ"Ґ¬  |   Љ(r)«iа   |  –i­   ';
         PS^.insert(NewStr(shapka));
         for i:=1 to kk do
         begin
              with Posh[i] do
              begin
                   s[0]:=chr(LLine);
                   FillChar(s[1],LLine,' ');
                   move(nazva[1],s[1],Length(nazva));
                   move(marka[1],s[succ(Lnazva)],Length(marka));
                   move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
                   move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
                   move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
                   move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
              end;
              PS^.Insert(NewStr(s));{¤(r)¤ у¬(r) г Є(r)«ҐЄжiо}
         end;
         i:=kk+1;
         with Poz[kp] do
         begin
              s[0] := chr(LLine);
              FillChar(s[1],LLine,' ');
              move(nazva[1],s[1],Length(nazva));
              move(marka[1],s[succ(Lnazva)],Length(marka));
              move(rik[1],s[succ(Lnazva+Lmarka)],Length(rik));
              move(obem[1],s[succ(Lnazva+Lmarka+Lrik)],Length(obem));
              move(colir[1],s[succ(Lnazva+Lmarka+Lrik+Lobem)],Length(colir));
              move(cina[1],s[succ(Lnazva+Lmarka+Lrik+Lobem+Lcolir)],Length(cina));
         end;
         PS^.Insert(NewStr(s));
         location:=1;
         Draw;
    end
             else NotFound;
end;
{---------------------------------------------------------------------------}
begin
    case poshuk of
    cmSearchnazva:Searchnazva;
    cmSearchmarka:Searchmarka;
    cmSearchrik:Searchrik;
    cmSearchobem:Searchobem;
    cmSearchcolir:Searchcolir;
    cmSearchcina:Searchcina;
    cmSearchAll:SearchAll;
end;
end;{SearchItem}
{--------------------------------------------------------------------------------}
    var R:TPoint;
        label cls;
begin
    TScroller.HandleEvent(Event);
    case Event.What of evCommand:
         case Event.Command of cmClose:
         begin
              Cls:
              case Control of{ЋваЁ¬ вЁ Є(r)¬ ­¤г § (r)б­(r)ў­(r)Ј(r) ¤i «(r)Ј(r)ў(r)Ј(r) ўiЄ­ }
                   cmCan,
                   cmCancel:EndModal(cmCancel);
                   cmEdit:AddItem(True);
                   cmDelete:DeleteItem;
                   cmSearch:SearchItem;
                   cmAdd:AddItem(False);
              end;
         end;
         cmzoom:exit;
         end;
    evMouseDown:{ђҐ Єжiп ­  ­ ¦ ввп Є« ўiиЁ ¬Ёиi}
    begin
         MakeLocal(MouseWhere,R);{ЋваЁ¬гу¬(r) ў R «(r)Є «м­i Є(r)(r)а¤Ё­ вЁ
                                        ўЄ §iў­ЁЄ  ¬Ёиi}
         Location:=Delta.Y+R.Y;
         Draw;
    end;
    evKeyDown:{ђҐ Єжiп ­  Є« ўiиЁ + -}
    case Event.KeyCode of
         kbEsc: goto Cls;
         kbGrayMinus: if Location>Delta.Y then
         begin
              dec(Location);
              Draw;
         end;
         kbGrayPlus:
         if Location<Delta.Y+pred(Size.Y) then
         begin
              inc(Location);
              Draw;
         end;
    end;
    end;
end;{TInterior.HandleEvent}
{---------------------------------------------------------------------------}
Procedure Tbook.Work;
{---------------------------------------------------------------------------}
    {ђ(r)Ў(r)в  § ¤ ­Ё¬Ё}
    var R:TRect;
        Control:Word;
        PW:PWorkWin;
begin
    R.Assign(0,0,80,23);
    PW:=New(PWorkWin,Init(r));
    Control:=DeskTop^.ExecView(PW);
    Dispose(PW,Done);
end;
{---------------------------------------------------------------------------}
Procedure Tbook.HandleEvent(var Event:TEvent);
{---------------------------------------------------------------------------}
    {ЋЎа(r)Ў«оў з Ї(r)¤i(c) Їа(r)Ја ¬Ё}
    type TEvent=record
         What:Word;{ЋЇаЁ¤i«пу вЁЇ Ї(r)¤iх}
         case Word of{"Џгбв " Ї(r)¤iп}
              evMouse:({Џ(r)¤iп ўi¤ ¬ЁиЄЁ:}
               Buttons:Byte;{‘в ­ Є« ўiи}
               Double:Boolean;{Ћ§­ Є  Ї(r)¤ўi(c)­(r)Ј(r) ­ ¦ ввп Є­(r)ЇЄЁ ¬ЁиЁ}
               Where:TPoint);{Љ(r)(r)а¤Ё­ вЁ Єгаб(r)а  ¬ЁиЁ}
               evKeyDown:({Џ(r)¤iп ўi¤ Є« ўi вгаЁ:}
                case Integer of
                   0:(KeyCode:Word);{Љ(r)¤ Є« ўiиЁ}
                   1:(CharCode:Byte;
                   ScanCode:Byte));
                   evMessage:({Џ(r)¤iп-§ўiбв(r)зЄ :}
                    Command:Word;{Љ(r)¤ Є(r)¬ ­¤Ё}
                    case Word of
                        0:(InfoPtr:Pointer);
                        1:(InfoLong:LongInt);
                        2:(Infoword:Word);
                        3:(InfoInt:Integer);
                        4:(InfoByte:Byte);
                        5:(InfoChar:Char));
                   end;
begin {TDovidnuk.HandleEvent}
    TApplication.HandleEvent(Event);{ЋЎа(r)ЎЄ  бв ­¤ ав­Ёе Є(r)¬ ­¤ cmQuit i cmMenu}
    if Event.What=evCommand then
    case Event.Command of{ЋЎа(r)ЎЄ  ­(r)ўЁе Є(r)¬ ­¤}
         cmOpen:FileOpen;
         cmSave:FileSave;
         cmChangeDir:ChangeDir;
         cmDOSShell:ShallDOS;
         cmWork:Work;
         cmAvtorA:AvtorA;
         cmAvtorV:AvtorV;
                            else
         exit;{ЌҐ (r)Ўа(r)Ў«пвЁ i­иi Є(r)¬ ­¤Ё}
    end;
    ClearEvent(Event);{ЋзЁбвЁвЁ Ї(r)¤iх Їiб«п (r)Ўа(r)Ў«Ґ­­п}
end;{TDovidnuk.HandleEvent}
{---------------------------------------------------------------------------}
Procedure Tbook.InitMenuBar;
{---------------------------------------------------------------------------}
    {‘вў(r)७­п ўҐае­м(r)Ј(r) ¬Ґ­о}
    var R:TRect;
begin
    GetExtent(r);
    R.B.Y:=succ(R.A.Y);{R -Є(r)(r)а¤Ё­ вЁ бва(r)ЄЁ ¬Ґ­о}
    MenuBar:=New(PMenuBar,Init(R,
    NewMenu(
     NewSubMenu('~F~/ ” (c)«', hcNoContext,
      NewMenu(
       NewItem('~1~/ ‚i¤ЄаЁвЁ','F3',kbF3,cmOpen,hcNoContext,
       NewItem('~2~/ ‡ ЄаЁвЁ','F2',kbF2,cmSave,hcNoContext,
       NewItem('~3~/ ‡¬i­ЁвЁ ¤ЁбЄ','',0,cmChangeDir,hcNoContext,
        NewLine(
        NewItem('~4~/ ‚ЁЄ«ЁЄ DOS','',0,cmDOSShell,hcNoContext,
        NewItem('~5~/ Љi­Ґжм а(r)Ў(r)вЁ','Alt-X',kbAltX,cmQuit,hcNoContext,
     NIL)))))) {ЌҐ¬  i­иЁе Ґ«Ґ¬Ґ­вiў Їi¤¬Ґ­о}),
     NewSubMenu('~A~/ Ђўв(r)а',hcNoContext,
      NewMenu(
       NewItem('~1~/ Ђўв(r)а Їа(r)Ја ¬Ё','Alt-P',kbAltP,cmAvtorA,hcNoContext,
        NewLine(
        NewItem('~2~/ ‚ЁЄ« ¤ з','Alt-V',kbAltV,cmAvtorV,hcNoContext,
        NIL)))),
     NIL)))));
end;{TDovidnuk.InitMenuBar;}
{---------------------------------------------------------------------------}
Procedure Tbook.InitStatusLine;
{---------------------------------------------------------------------------}
    {ЋЇЁб ­­п ­(r)ў(r)Ј(r) ¬Ґв(r)¤ , § ¤(r)Ї(r)¬(r)Ј(r)о пЄ(r)Ј(r) бвў(r)аоувмбп бва(r)Є  бв вгб }
    var R:Trect;
begin
    GetExtent(r);
    R.A.Y:=pred(R.B.Y);{Џ(r)¬iй у¬ ў R Є(r)(r)а¤Ё­ вЁ бва(r)ЄЁ бв вгб }
    {‘вў(r)аоу¬ бва(r)Єг бв вгб :}
    StatusLine:=New(PStatusLine,Init(R,
    {ЋЇаЁ¤i«пу¬ (r)¤Ё­ ў аi ­в бва(r)ЄЁ бв вгб :}
    NewStatusDef(0, $FFFF,{ўбв ­(r)ў«оу¬(r) ¤«п жм(r)Ј(r) ў аi ­в  ¬ ЄбЁ¬ «м­Ё(c) ¤i Ї §(r)­ Є(r)­вҐЄбв­(r)х бЇа ў(r)з­(r)х б«г¦ЎЁ}
     NewStatusKey('~Alt-X~ ‚Ёеi¤',kbAltX,cmQuit,
     NewStatusKey('~F10~ ЊҐ­о',kbF10,cmMenu,
     NIL)), {ЌҐ¬  i­иЁе Є« ўiи}
    NIL) {ЌҐ¬  i­иЁе ўЁ§­ 祭м}));
    DisableCommands(Wincom1)
end;{TDovidnuk.InitStatusLine}
{--------------------------------------------------------------------------------}
end.