- •Литература
- •Содержание
- •1. Основные понятия ооп
- •2. Программирование для Windows
- •3. Визуальное программирование и среда Delphi
- •Создание приложений в средеDelphi
- •Компоненты общего назначения tMainMenu- главное меню формы (программы)
- •TPopupMenu- вспомогательное (локальное) меню
- •TLabel- метка для отображения текста
- •TEdit-ввод и отображение строки
- •TMemo- ввод и отображение текста
- •TButton- кнопка
- •TBitBtn- кнопка с изображением
- •TSpeedButton- кнопка для инструментальных панелей
- •TCheckBox- независимый переключатель
- •TRadioButton- зависимые переключатели
- •TRadioGroup- группа зависимых переключателей
- •TListBox- список выбора
- •TComboBox- раскрывающийся список выбора
- •TPanel- панель
- •TTabControl- набор закладок
- •TPageControl- набор страниц с закладками
- •4. Особенности языка ооп Object Pascal
- •Процедуры и функции Выход из процедур и фукнций и возврат результата
- •Передача параметров
- •Параметры со значениями по умолчанию
- •Перегрузка функций
- •Динамическое распределение памяти
- •Указатели
- •Операции с указателями
- •Операция @
- •Самоадресуемые записи
- •Динамические массивы Одномерные динамические массивы
- •Многомерные динамические массивы
- •Исключения и их обработка
- •Защита кода зачистки в блокахtry...Finally
- •Защита кода зачистки на уровне модуля — разделfinalization
- •Обработка исключений в блокахtry...Except
- •Последовательность обработки исключений
- •5. Классы и объекты
- •Классы и объекты
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Составляющие класса Поля
- •Одноименные методы
- •Свойства
- •События
- •Объявление класса
- •Операции с классами
- •Ссылки на классы
- •TObjectи информация о классах
- •Регистрация и обнаружение классов
- •6. Создание объектов во время выполнения, поиск компонентов
- •Клонирование объектов
- •Поиск компонента
- •Двукратное освобождение объекта
- •7. Построение собственных компонентов
- •Как и для чего следует строить компоненты
- •Общие руководящие принципы
- •Ключевые идеи
- •Компиляция компонентов
- •Отладка компонентов
- •Примечание
- •Примечание
- •Примечание
- •8. Работа с потоками
- •Классы потоковDelphi
- •Файловые потоки
- •Примечание
- •Методы потоков в действии: программаMemoStr
- •Потоки памяти
- •Пример программыMemoryS
- •Примечание
- •Написание заказного класса потока
- •9. Работа с com-объектами, использование серверов ole-автоматизации
7. Построение собственных компонентов
При создании приложений Windows в Delphi обычно используются существующие компоненты Delphi. Это то, что обычно определяется термином визуальное программирование: размещение компонентов на визуальной форме и запись некоторого кода, чтобы соединить их вместе. В отличие от большинства других визуальных инструментальных средств программирования, Delphi позволяет построить свои собственные компоненты внутри собственного окружения.
Как и для чего следует строить компоненты
Сложно преувеличить значение компонентов в Delphi. В конце концов, компоненты — это основа программирования в Delphi, а ключевые слова property и published — возможно, наиболее заметные расширения языка Object Pascal в Delphi.
В Delphi есть несколько фундаментальных причин строить компоненты. Вот их краткий список:
• Возможность личного многократного использования. Здесь цель состоит в том, чтобы избежать двухкратного переписывания того же самого кода в одной программе или в различных программах. Хотя Delphi предоставляет альтернативные приемы, обеспечивающие возможность многократного использования (включая наследование формы), инкапсуляция кода в компонентах является одним из самых лучших. В конце концов, многократное использование компонента вообще проще, чем другие формы многократного использования, благодаря своей наглядности. Кроме того, многократное использование кода с помощью компонентов намного более гибче, чем наследование визуальнй формы. Например, в форму можно добавить несколько заказных компонентов и, благодаря этому, повторно использовать код из двух разных источников в одной форме. Однако визуальное наследование форм нельзя использовать для одновременного наследования из двух базовых форм. ;
• Возможность многократного использования группой программистов. В этом случае цель состоит в совместном использовании компонента, написанного вами, или наоборот, написанного вашими соисполнителями. Существуют различные варианты, в том числе право квалифицированных программистов помещать компоненты в библиотеку визуальных компонентов (Visual Component Library — VCL), что может радикально улучшить вашу производительность или всего коллектива. Это особенно справедливо, если программисты в группе имеют разные уровни квалификации при написании кода для частных задач. Каждый программист может писать компоненты, которые он (или она) может реализовать наиболее эффективно. Другие же программисты могут не уметь создавать такие компоненты, но зато могут легко научиться их использовать.
• Глобальная возможность многократного использования. Здесь цель состоит в том, чтобы издавать или продавать ваши компоненты любому из сотен тысяч других программистов Delphi. В Internet можно найти много простых компонентов (хотя они могут быть не достаточно современными), часто с полным исходным текстом компонента. Как только на исследование и разработку сложного компонента затрачено значительное время, можно продать его как пакет общего пользования или как коммерческий пакет. Причина возможности многократного использования состоит (как для компонентов VBX и элементов управления OCX/ActiveX) в наличии достаточного количества потенциальных покупателей, чтобы установить низкую цену компонентов.
В любом случае, целью является некоторая форма возможности многократного использования. По этой же причине программисты традиционно собирают библиотеки функций и классов, а затем покупают и продают эти библиотеки. Однако использование функций или классов, не входящих в библиотеки, обычно требует много тяжелой работы. С другой стороны, использование компонента в визуальной среде программирования с интуитивным набором свойств и событий гораздо проще.
Примечание
Хотя несколько инструментальных средств программирования применяли концепцию компонентов, основанную на визуальном программировании (больше всех выделяется Visual Basic), Delphi - единственный инструмент, который полностью объединил объектно-ориентированное понятие классов с концепцией компонентов. В результате возникла это уникальная способность расширять существующие компоненты, получая новый производный класс.