Энциклопедия Turbo Pascal. Главы 9-11
Страница 20. Окна


Окна

     Графический инструментарий позволяет вам создавать и обраба-
тывать одно или несколько окон. Каждое окно может быть связано со
своей отдельной планетной координатной системой. Кроме того, окно
может иметь заголовок и быть заключенным в границы.  Две основные
процедуры  используются  для  работы  с  окнами:  DefincWindow  и
SelectWindow. Они декларируются следующим образом:
    procedure DefineWindow(WindomNum, X1, Y1, X2, Y2: integer);
    procedure SelectWindow(WindomNum: integer);
WindoNum - это номер окна. В процедуре DefineWindow параметры X1,
Y1 определяют местоположение верхнего левого угла,  а  X2,  Y2  -
правого   нижнего   угла.   Одним  необычным  аспектом  процедуры
DefineWindow является измерение координаты Х единицами, равными 8
пикселам. Следовательно, предложение
    Defin_Window(1, 0, 0, 10, 10);
задает окно, которое имеет 10 пикселов высоты и 80 пикселов шири-
ны (такой подход используется,  так как все окна должны быть  вы-
равнены в памяти отображения на границу байта).
     Для связи  планеты с окном необходимо придерживаться следую-
щей последовательности:
     1. выбрать планету;
     2. выбрать окно.
Для отображения сообщения в заголовке вы должны  сначала  связать
заголовок  с окном,  а затем заголовок в соответствие "включено".
Для  реализации  этого  используйте  процедуры   DefineHeader   и
SetHeaderOn, которые декларируют следующим образом:
    procedure DefineHeader(WindowNum: integer, Msg: WrkString);
    procedure SetHeaderOn;
Вызов DrawBorder помещает границу вокруг активного  окна.  Данная
процедура не имеет параметров.
     Следующая программа иллюстрирует правильный  порядок  вызова
различных процедур работы с окном для того,  чтобы активизировать
окно с границей и заголовком. Ее вывод показан на рис.10-5.
    program One_Window;

    {Si typedef.sys}
    {Si graphix.sys}
    {Si kernel.sys}

    var
      i:integer;

    begin
      InitGraphic;
      DefineWorld(1, 0, 0, 1000, 1000);
      DefineWindow(1, 20, 20, 40, 100);

      DefineHeader(1, 'Заголовок');
      SetHeaderOn;
      SekectWorld(1);
      SekectWindow(1);
      DrawBorder;
      repeat until KeyPressed;
      LeaveGraphic;
    end.

    --------------------------------------------------
             -----------------¬
             L-----------------
             -----------------¬
             ¦                ¦
             ¦                ¦
             ¦                ¦
             ¦                ¦
             ¦                ¦
             ¦                ¦
             L-----------------
    ---------------------------------------------------
    Рис.10-5. Простое окно с границей и заголовком

 
Следующая статья »