Диалоговое окно выбора режима
Этот текст не связан с диалогом и называется статическим. Для вставки статической строки в любой видимый элемент используется конструктор TStaticTextJnit, которому в качестве параметров передаются координаты строки и сама строка. Как Вы уже могли заметить, идентификаторы объектов в Turbo Vision начинаются на букву Т, а идентификаторы типов-указателей на экземпляры этих объектов начинаются на букву Р. Таким образом, PStaticText – это тип-указатель на экземпляр объекта TStaticText, поэтому оператор:
Insert(New (PStaticText, Init(R,'Текст'))
Помещает строку "Текст" на место, заданное координатами переменной R. Отметим, что если строка начинается на символ #3, то при выводе на экран она будет размещаться в центре прямоугольника R. Мы используем это соглашение и дополняем каждую выводимую строку этим символом. В цикле:
for k: = 0 to 4 do {Вставить кнопки:}
В окно вставляются пять кнопок. При их инициации используется то обстоятельство, что определенные нами команды cmCan,…, cmAdd образуют непрерывное множество [205..209].
Особо следует остановится на операторе:
SelectNext(False); {Активизируем 1-ю кнопку}
Дело в том, что по умолчанию активизируется тот элемент диалогового окна, который задан (вставлен в окно) последним. Чтобы изменить активность по умолчанию, используется вызов процедуры SelectNext, которая смещает активность к следующему элементу. Так как элементы образуют замкнутую цепь (от последнего элемента активность переходит к первому), параметр обращения к этой процедуре указывает направления смещения: если он имеет значение False, активным станет следующий в цепи элемент, если True – предыдущий.
Прежде, чем Вы попробуете запустить эту программу на счет, внесем в нее несколько изменений. Во-первых, пора убрать имитацию данных, показываемых в окне просмотра. Для этого в процедуре TInterior.ReadFile необходимо удалить строки:
s: = copy(ParamStr(O),1,pos('.',ParamStr(0)))+'pas'; assign(f,s); ….. exit;
Надеюсь, что Вы заблаговременно подготовили остальной текст этого метода, если это не так, вставьте операторы:
seek (DataFile, 0); while not (EOF (DataFile) or LowMemory) do begin ….. end; Location: = 0