Иллюстрированный самоучитель по Tirbo Pascal


              

Контекстная помощь


В Turbo Vision предусмотрены средства, облегчающие создание контекстно-зависимой справочной службы. С этой целью каждый видимый элемент имеет специальное шестнадцатиразрядное поле TView.HelpCtx, содержимым которого Вы можете распоряжаться по своему усмотрению. Обычно каждому видимому элементу присваивается свой код (целое число в диапазоне от 0 до 65535), устанавливаемый в поле HelpCtx. В этом случае при нажатии на заранее обусловленную командную клавишу, открывающую доступ к справочной службе (обычно это клавиша F1), программа может получить текущий контекст (прямым чтением поля HelpCtx или с помощью метода GetHelpCtx) и передать его в качестве параметра вызова справочной службе.

Где обрабатывать событие, связанное с нажатием клавиши вызова справочной службы? Идеальным местом для этого является источник всех событий - метод GetEvent. Этот метод связан с любым видимым элементом, в том числе и с терминальным видимым объектом, и поэтому без труда может получить текущий контекст.

В следующем примере на экране создается диалоговое окно с двумя кнопками. Клавиша F1 используется для доступа к справочной службе. Если активна (выбрана) левая кнопка, нажатие на F1 даст сообщение «Левая кнопка», если правая - «Правая кнопка». Если на экране нет диалогового окна (оно вызывается клавишей F2), появится сообщение «Нет окна».

Uses CRT,App,Dialogs,Obj ects,Drivers,Views,Menus; 

type

PProg = TProg;

TProg = object (TApplication)

Procedure HandleEvent(var Event: Tevent); Virtual; 

Procedure GetEvent(var Event: Tevent); Virtual; 

Procedure InitStatusLine; Virtual;

end;

Procedure TProg.HandleEvent(var Event: TEvent); 

Procedure Dialoglnit; 

var

R: TRect;

Dia: PDialog; 

B1,B2: PButton;

с: Word; 

begin

ClearEvent(Event);

R.Assign(20,9,60,17);

Dia := New(PDialog, Init(R,''));

R.Assign(3,4,19,6);

Bl := New(PButton,Init(R,'Левая',0,0));

El*.HelpCtx := 1;

DiaA.insert (B1);

R.Assign(20,4,35,6);

B2 := New(PButton,Init(R,'Правая',0,0));



Содержание  Назад  Вперед