RSS    

   Реферат: 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


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.