Четвертый Borland C++ и его окружение

       

Добавление данных, выводимых в отображаемых элементах


Сам TView не предусматривает вывода данных. В нем отсутствует указатель на окно, нет графических функций и функций вывода

текста, а также функций для работы с клавиатурой. Эти функциональные возможности вы должны обеспечить в производных классах,

для чего можно использовать один из следующих методов:

  • Добавлением в производных классах отображаемых элементов

    указателя на интерфейсный объект.

  • Объединением в производных классах функциональности интерфейсного объекта с задаваемыми вами действиями.
  • Каждый из этих методов имеет свои преимущества и недостатки,

    которые обсуждаются ниже.

    Чтобы добавить в производном от TView классе указатель на

    интерфейсный объект, добавьте элемент к новому классу и создайте

    к конструкторе класса отображаемого элемента экземпляр объекта.

    Доступ к данным интерфейсного объекта и его функциям-элементам

    можно получить через указатель.



    Такой метод позволяет вам легко подключать и отключать различные интерфейсные объекты и использовать различные их типы.

    Например, создав указатель TWindow*, можно использовать большинство видов интерфейсных объектов.

    Недостатком является то, что обрабатываемое событие проходит

    сначала через интерфейсный объект или приложение. Это вынуждает

    вас либо использовать для добавления функций обработки событий

    производный интерфейсный объект, либо обрабатывать событие через

    объект приложения. В любом случае это уменьшает гибкость при обработке событий.

    Смешивание TView или производного от TView объекта с производным объектом дает вам возможность вывести данные из документа

    с обработкой потока передаваемых в документ и из документа данных. Это несложная, но требующая аккуратности задача.

    Чтобы создать новый производный класс, определите этот класс

    на основе базового класса отображаемого документа (TView или производного от TView класса) и выбранного интерфейсного объекта.

    Новый конструктор должен вызывать конструкторы обоих базовых

    классов. Как минимум, этот новый класс должен определять все виртуальные функции базовых классов. Там следует также определить

    специализированные функции для работы с экраном и функции обработки событий, взаимодействующие с интерфейсным элементом и объектом документа.

    Этот подход имеет то преимущество, что полученный в результате отображаемый элемент будет в высокой степени интегрированным. Обработка ошибок выполняется централизованно, что уменьшает

    необходимость делать это на уровне приложения. Управление интерфейсными элементами осуществляется не через указатель, а также

    интегрирована в новый класс отображаемого элемента. Однако данный

    метод не дает такой гибкости, как использование указателя. Вы не

    можете также обмениваться различными типами объектов с помощью

    базового указателя на различные классы интерфейсных объектов.



    Содержание раздела