Контекстная помощь
begin TApplication.HandleEvent (Event); case Event. Command of cmHelp: if not HelpOpen then DoHelp; {Выдаем справку} cmChangeCtx: {Изменяем контекст по клавише F2} begin if HelpCtx = 3 then HelpCtx: = 0 else inc (HelpCtx); Ctx^.Draw; ClearEvent (Event) end end end; Function MyHelpWindow.GetPalette; const P = #16#17#18#19#20#47#21#13; C: String [8] = P; begin GetPalette: = @C end; Constructor TCtxView. Init; var R: TRect; begin R. Assign (67, 0, 80, 1); TView.Init(R); end; Procedure TCtxView. Draw; var S: String; B: TDrawBuffer; C: Byte; begin Str (Application^. HelpCtx, S); S: = 'Контекст = '+S; С: = GetColor(2); MoveChar(B, ' ', C, Size.X); MoveStr(B, S, C); WriteLine(0, 0,Size.X,1,B) end; var Р: МуАрр; begin P.Init; P.Run; P.Done end.
В программе предусмотрена смена текущего контекста с помощью клавиши F2. Разумеется, в реальной программе смена контекста будет, судя по всему, происходить иначе: обычно в текст конструктора Init видимого элемента вставляется оператор:
HelpCtx: = NNN;
Где NNN – нужный контекст.
Для визуализации текущего контекста в программе используется простой объект TCtxView, с помощью которого в верхнем правом углу экрана выводится строка:
Контекст = N
Здесь N – текущий контекст.