TURBO PASCAL |
Новости
|
Строка статуса
В следующей программе создается строка статуса, содержание которой зависит от установленного контекста подсказки (определяется значением поля TProgram.HelpCtx). В зависимости от действий пользователя эта строка будет содержать текст Esc Выход F1 Сменить контекст на 1 Однажды в студеную, зимнюю пору либо ESC Выход F2 Сменить контекст на 0 Я из лесу вышел. Был сильный мороз... Переключение строки осуществляется клавишами F1 и F2, для выхода из программы используется клавиша Esc. Uses Objects,App,Menus,Drivers,Views; type PMyStatusLine = TMyStatusLine; TMyStatusLine = object (TStatusLine) Function Hint(Cntx: Word): String; Virtual; end; MyApp = object (TApplication) StatLine: PMyStatusLine; Constructor Init; Procedure InitStatusLine; Virtual; Procedure HandleEvent(var Event: Tevent); Virtual; end; const cmCntxl =200; cmCntx2 = 201; {-----------------} Constructor MyApp.Init ; begin Inherited Init; Insert (StatLine) {Использовать нестандартную строку статуса} end {MyApp .Init} ; Procedure MyApp. Ini tstatusLine ; {Инициация нестандартного поля MyApp. StatLine} var R: Trect; begin GetExtent (R) ; R.A.Y := pred(R.B.Y) ; StatLine := New(PMyStatusLine, Init(R, NewStatusDef (0, 0, {Первый вариант строки} NewStatusKey ( ' ~Esc~ Выход1 , kbEsc, cmQuit, NewStatusKey (' ~F1~ Сменить контекст на 1', kbF1 , cmCntxl , NIL) ) , NewStatusDef (1, 1, {Второй вариант строки} NewStatusKey (' ~Esc~ Выход ', kbEsc, cmQuit, NewStatusKey (' ~F2~ Сменить контекст на 0 ' , kbF2 , cmCntx2 , NIL)) , NIL) ) ) ) ; end {MyApp. Ini tstatusLine} ; {--------------------} Procedure MyApp. HandleEvent; {Переключение контекста и обновление строки статуса} begin Inherited HandleEvent (Event) ; case Event . Command of cmCntxl: HelpCtx := 1; cmCntx2: HelpCtx := 0; else ClearEvent (Event) ; end; if Event. What <> evNothing then begin StatLine. Update; ClearEvent (Event) end end {MyApp . HandleEvent } ; {---------------------} Function TMyStatusLine. Hint (Cntx: Word):String; {Переключение поля подсказки} const Prompt: array [0..1] of String =( 'Однажды в студеную, зимнюю пору', 'Я из лесу вышел. Был сильный мороз...'); begin Hint : = Prompt [Cntx] end {TMyStatusLine.Hint} ; {---------------------} var P : MyApp ; begin P.Init; P . Run ; P . Done end .
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |