Окно с текстом
В следующей программе на экране создается несколько окон, содержащих один и тот же текст – текст программы (см. рис. 23.3).
Рис. 23.3. Окна с текстом программы
Каждое новое окно открывается с помощью клавиши Ins. Активное окно можно удалить клавишей Del или распахнуть на весь экран клавишей F5. С помощью мыши Вы можете перемещать активное окно по экрану и/или изменять его размеры.
Uses Objects,App,Views,Drivers,Menus; const cmNewWin = 200; cmDelWin = 201; MaxLine = 22; {Количество текстовых строк} var Lines: array [0.. MaxLine] of String [80]; type MyApp = object (TApplication) WinNo: Word; Constructor Init; Procedure InitStatusLine; Virtual; Procedure HandleEvent (var Event: Tevent); Virtual; Procedure NewWindow; end; PInterior = Tinterior; TInterior = object (TView) Constructor Init(R: TRect); Procedure Draw; Virtual; end; {----------------} Constructor MyApp. Init; {Открывает и читает файл с текстом программы} var f: text; s: String; k: Integer; begin Inherited Init; WinNo: = 0; {Готовим номер окна } for К: = 0 to MaxLine do Lines [k]: = ' '; {Готовим массив строк} s: = copy(ParamStr(0),1,pos ('.',ParamStr(0)))+'PAS'; {$I-} Assign (f,s); Reset (f); if IOResult < > 0 then exit; {Файл нельзя открыть} for k: = 0 to MaxLine do if not EOF(f) then ReadLn(f, Lines [k]); Close(f) {$I+} end {MyApp.Init}; {----------------} Procedure MyApp. InitStatusLine; var R: TRect; begin GetExtent (R); R.A.Y: = pred(R.B.Y); StatusLine: = New(PStatusLine, Init(R, NewstatusDef (0,$FFFF, NewStatusKey (' ~ALT + X~ Выход', kbALTX, cmQuit, NewStatusKey (' ~Ins~ Открыть новое', kbIns, cmNewWin, NewStatusKey (' ~Del~ Удалить активное', kbDel, cmClose, NewStatusKey (' ~F5~ Распахнуть ', kbF5, cmZoom, NIL)))), NIL))) end {MyApp. InitStatusLine};