Реферат: Turbo Vision
ру.Для этого нужно либо внести изменения в исходный текст модуля App
(константа CAppColor) и перекомпилировать его, либо внести изменения
в метод GetPallete объекта tProgram.
Второй вариант - когда нужно изменить цвета у какого-нибудь объ-
екта группы, а в этой группе есть другой объект, обладающий необходи-
мыми цветами.В этом случае можно изменить соответствующим образом
константу, определяющую палитру у метода GetPallete.
Если необходимо изменить цвета конкретного объекта, а требуемого
сочетания цветов у его владельца нет, то следует дополнить основную
палитру программы новыми элементами, соответствующими требуемым цве-
там.Так как основная палитра исходно имеет 127 элементов, то примерно
столько же можно к ней добавить в случае необходимости.После этого
следует переопределить метод GetPallete основного объекта программы.
В тех случаях, когда следует предусмотреть частое изменение цве-
тов отдельных объектов в процессе выполнения программы, можно восполь-
зоваться средствами модуля ColorSel.
НЕОТОБРАЖАЕМЫЕ ОБЪЕКТЫ TURBO VISION
Помимо отображаемых, в Turbo Vision имеется ряд неотображаемых
объектов, предназначенных для выполнения действий, не связанных непос-
редственно с представлением информации на экране, в частности проверки
вводимой информации или размещения в них той или иной информации.
Основными неотображаемыми объектами являются анализаторы вводимой
информации, коллекции, потоки и ресурсы.Все эти объекты - потомки объ-
екта tObject.
Анализаторы вводимой информации
В Turbo Vision 2.0 имеется возможность контроля размещаемой в
строке ввода информации.Для этого служит серия объектов, называемых
анализаторами вводимой информации, исходным является абстрактный объ-
ект tValidator, а его потомками являются стандартные анализаторы.
Анализатор множества допустимых символов (тип tFilterValidator)
проверяет, входят ли вводимые символы в множество допустимых, и если
входят, то помещаются в буфер строки ввода, а в противном случае сим-
волы игнорируются.Инициализация такого анализатора осуществляется
конструктором Init :
constructor tFilterValidator.Init(AValidChars: tCharSet);
где AValidChars - множество допустимых символов типа tCharSet.
Анализатор границ вводимого числа (тип tRangeValidator) предназ-
начен для контроля вводимых в символьной форме целых чисел (в общем
случае типа Logint).Этот анализатор, являясь потомком объекта
tFilterValidator, помимо проверки допустимых символов (только цифр и
знаков "+" и "-" в первой позиции вводимой информации) проверяет также
значение введенного числа и его нахождение в заданном диапазоне.
Анализатор инициализируется конструктором Init :
constructor tRangeValidator.Init(AMin, AMax: Longint);
где AMin, AMax - миним. и максим. допустимые границы вводимого числа.
Если введенное число не попадает в заданный диапазон, выдается
сообщение об ошибке в виде информационного окна, при выходе из которо-
го происходит возврат к строке ввода для внесения соответствующих из-
менений.Окно не закрывается.
Анализатор по списку строк (тип tStringLookupValidator) сравнива-
ет строку введенных символов со списком допустимых строк, находящимся
в коллекции строк.Реакция при неправильно введенной строке аналогичная.
Анализатор инициализируется конструктором Init :
constructor tStringLookupValidator.Init(
AStrings: pStringCollection);
где AString - коллекция строк, с которыми сравнивается вводимая инфор-
мация.
Анализатор по шаблону (тип tPXPictureValidator) позволяет создать
шаблон, по которому проверяется вводимая информация.Можно проверять
количество вводимых символов, их вид и т.д.
Анализатор инициализируется конструктором Init :
constructor tPXPictureValidator.Init(
const APic: string; AutoFill: Boolean);
где APic - шаблон, по которому проверяется вводимая информация;
AutoFill - если равен True, вводимая информация автоматически до-
полняется символами шаблона, не являющимися служебными символами.
Анализатор должен быть подключен к соответствующей строке ввода с
помощью метода SetValidator строки ввода :
procedure tInputLine.SetValidator(AValid: pValidator);
где AValid - указатель на подключаемый к строке ввода анализатор.
Объект-коллекция
Объект-коллекция (тип Collection) предназначен в первую очередь
для размещения в нем объектов (точнее, указателей на объекты).Основным
отличием коллекции от массива является то, что размеры ее при необхо-
димости могут изменяться.Кроме этого, коллекция может содержать объек-
ты разных типов и элементы, не являющиеся объектами.
Создается коллекция с помощью конструктора Init :
constructor tCollection.Init(ALimit, ADelta: Integer);
где ALimit - первоначальный размер коллекции;
ADelta - величина, на которую изменяется размер в случае необхо-
димости.
Работа с коллекцией осуществляется следующим образом.Вначале соз-
дается коллекция и инициализируется конструктором Init.После этого в
нее можно помещать компоненты.При этом в коллекции помещается указа-
тель на размещаемый объект.Если при размещении очередного объекта в
коллекции нет достаточного места, она автоматически увеличивается на
величину ADelta.
Компоненту в коллекцию можно поместить либо в конце списка, либо
после компоненты с указанным значением индекса.В первом случае исполь-
зуется метод Insert :
procedure tCollection.Insert(Item: Pointer); virtual;
где Item - указатель на размещаемый в коллекции объект,
во втором случае используется метод AtInsert :
procedure tCollection.AtInsert(Index:Integer;Item: Pointer);
где Index - номер компоненты, который получает размещаемый объект;
Item - указатель на размещаемый в коллекции объект.
Эти методы копии размещаемого в коллекции объекта не создают.
Следует отметить три важных метода коллекции.
Метод FirstThat :
function tCollection.FirstThat(Test: Pointer): Pointer;
где Test - указатель на функцию, проверяющую некоторое условие;
результат - указатель на первую компоненту коллекции, для которой
верно условие, проверяемое функцией, указатель на которую равен Test.
Функция с указателем Test не должна быть методом и должна компи-
лироваться с директивой far.Ее заголовок выглядит следующим образом :
function <имя функции>(Item: Pointer): Boolean; far;
В этом заголовке Item - указатель на компоненту коллекции; ре-
зультат функции равен True, если проверяемое функцией условие выполня-
ется, и False - в противном случае.
Второй метод - LastThat :
function tCollection.LastThat(Test: Pointer): Pointer;
где Test - указатель на функцию, проверяющую условие; результат - ука-
затель на последнюю компоненту коллекции, для которой верно условие,
проверяемое функцией, указатель на которую равен Test, либо nil, если
ни для одной компоненты коллекции условие не выполняется.Функция с
указателем Test аналогична такой же функции метода FirstThat.
Третий метод - ForEach :
procedure tCollection.ForEach(Action: Pointer);
где Action - указатель на процедуру, которая выполняет требуемые дейс-
твия с каждой компонентой.Процедура с указателем Action не должна быть
методом и должна компилироваться с директивой far.Ее заголовок :
procedure <имя процедуры>(Item: Pointer); far;
где Item - указатель на компоненту коллекции.
Коллекция может содержать не только объекты, но и элементы других
типов.В частности, имеется стандартная коллекция строк (тип
tStringCollection).В ней переопределен метод FreeItem, который удаляет
компоненту из коллекции и из динамической памяти.
Потоки Turbo Vision
Поток и его потомки предназначены для хранения в них объектов и
данных других типов.Потоки напоминают обычные файлы, но они могут су-
ществовать не только на внешних устройствах, но и в оперативной памя-
ти.Другое важное отличие - возможность хранения данных разных ти-
пов.Возможны запись и чтение.
При создании потока в нем не находится никакой информации.Записы-
ваемая в поток информация последовательно приписывается к его концу,
так что условный указатель на текущий элемент файла в этом случае ука-
зывает на его конец.После чтения очередной компоненты из потока указа-
тель автоматически настраивается на начало следующей.
Поток типа tStream является абстрактным потоком, потому что он не
привязан к конкретному носителю информации.На практике используются
потоки ДОС (тип tDosStream) и буферированный поток (тип
tBufStream).Они позволяют хранить информацию во внешних файлах, причем
у буферированного потока информация передается через промежуточный бу-
фер, что повышает быстродействие работы.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13