|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|||||||||||
Visual Component Library: Вид изнутри, удаление и установка компонентов30.07.2010, 00:56. Показов 80719. Ответов 0
Метки rad studio 2010, visual component library, обновление indy, удаление компонентов, установка компонентов (Все метки)
1. Теоретическая часть. Знакомство с Visual Component Library.
2. Практическая часть. Регистрация VCL-компонентов в RAD Studio
3. Заключение. ________________________________________ _________ 1. Теоретическая часть. Знакомство с Visual Component Library.
Visual Component Library - библиотека, интегрированная в среду разработку. Основное её назначение - манипулирование классами визуальных компонентов на стадии проектирования. Поведение и вид компонентов определяются по мере разработки приложения, хотя можно модифицировать их и в процессе выполнения программы. Миссия VCL заключается в сокрытии от программиста запутанных низкоуровневых API-функций Windows.
Компоненты - это "строительные кирпичи", из которых конструируется интерфейс программы. Компоненты постепенно обеспечивают вид приложения и закладывают в него определённое поведение и особенности. VCL-компонент представлен неким объектом, который программист способен перетащить с палитры компонентов на форму. После размещения компонента программист вправе управлять внешним видом компонента (если компонент не относится к "невидимому" или "безликому" классу), свойствами компонента, его события и наполнять его содержание кодом. Для разработчика компоненты представляют собой классы, реализованные на Pascal, C++ или C#. Некоторые компоненты инкапсулируют типовые элементы управления из ОС Windows, другие - вносят различные эффекты и стили в существующих элементах.
Компонент - логически завершённая кодовая конструкция, содержащая свойства, методы и события. Все компоненты произведены из класса TObject. Для наглядности, предоставляю иерархию классов в VCL: Класс TObject - фундаментальный предок всех остальных классов. Именно этот класс имеет в себе параметр Sender, благодаря которому обработчики событий получают возможность идентифицировать практически любой объект-источник события. Класс TPersistent - абстрактный класс, произведённый из TObject. Все классы, произведённые от TPersistent будут обладать способностью присваивания и поточностью. Класс имеет методы:
Класс TComponent - произведён от TPersistent. Данный класс придаёт всем компонентам возможности:
Данный класс имеет свойства:
Методы класса TComponent:
Класс TControl - определяет события, методы и свойства характерные всем видимым компонентам. Наверное все вы видели свойства, которые не нуждаются в объяснении: Visible, Enabled, Align, ClientRect, Color, Font, Cursor и многие другие... Один из наиболее интересных методов - метод Perform, который посылает указанное сообщение оконной процедуре WndProc элемента управления (в обход очереди Windows). Также, класс TControl инкапсулирует основные события, которые может породить манипулятор "мышь". Класс TWinControl - имеет особенность вводить во все производные классы оконный дескриптор (Window Handle). Стандартные оконные компоненты произведены именно от класса TWinControl. Классы, произведённые от TWinControl могут также принимать фокус ввода и могут являться родителями других элементов управления. Свойства класса TWinControl:
Методы класса TWinControl:
Специальные методы класса TWinControl:
Класс TCustomControl - класс, производный от TWinControl. Его можно рассматривать как "строительную площадку" для создания компонентов, соответствующих оригинальным требованиям пользователя. Данный класс предоставляет полотно для рисования (класс TCanvas) и виртуальный метод Paint, перегрузка которого позволит отображать компоненты так, как вы пожелаете. Будучи оконным элементом управления, TCustomControl может принимать фокус ввода. Класс TGraphicControl - предназначен для создания визуальных компонентов, которые не являются окнами, т.е. не могут содержать в себе других компонентов и не могут получать фокус ввода. Главное предназначение данного класса - способность отображать графику или текст на компоненте. Класс TGraphicControl также передает своим потомкам свойство Сanvas. Виртуальный метод Paint вызывается в ответ на сообщение WM_PAINT, принимаемое родительским элементом управления. Класс TGraphicControl не пользуется системными ресурсами Windows, т.к. не требует оконного дескриптора. Методы рисования исполняются немного быстрее за счёт того, что перерисовка компонента не связана с диспетчеризацией Windows-сообщений, а реализуется процессом, заложенным в родителе данного элемента.
Все компоненты являются прямыми или косвенными потомками класса TComponent. Большинство компонентнов представляют собой элементы управления интерфейсом с пользователем. Компоненты никогда не размещаются в стеке! Размещаются только в куче (heap), с помощью оператора new. Стандартные компоненты - инкапсулируют типовые управляющие элементы ОС Windows. Любой компонент из вкладки Standart ведёт себя точно также, как соответствующий родительский Windows-элемент (VCL добавляет оболочку, позволяющую изменять внешний вид) Адаптируемые компоненты - представляют собой элементы управления, которые не содержат ни метода для собственного отображения, ни определённого поведения. Разработчик должен сам обеспечить определение поведения компонента. Графические компоненты - видимые элементы, которые не способны принять фокус ввода. Графические компоненты не могут служить контейнерами для других элементов управления (не имеют права владения). Невидимые компоненты - компоненты, не имеющие визуального интерфейса. Вы можете управлять их поведением с помощью предоставленных методов и свойств. Контейнерные компоненты - компоненты, которые могут владеть другими компонента или выступать в роли их родителя. Владелец в этом случае будет ответственным за освобождение памяти. При динамическом создании компонента конструктору, в качестве параметра, передаётся владелец. Для того, чтобы компонент отобразился на форме ему необходимо назначить родителя, ответственного за его прорисовку (свойство Parent) Для примера, динамически создадим объект класса TPanel и отдадим объект класса TButton во владение:
2. Практическая часть. Регистрация VCL-компонентов в RAD Studio
В практической части я расскажу вам о том, как установить VCL-компоненты в RAD Studio. Для примера, я возьму компоненты Indy, которые поставляются с открытым исходным кодом. Как известно, компоненты Indy поставляются с IDE в "стандартном наборе". Однако, их разработка не стоит на месте, и нам может потребоваться более актуальная версия. Значит, первым делом нам необходимо удалить их из состава IDE. Открываем RAD Studio и переходим к Component -> Install Packages ... Находим пакеты, поставляемые Indy (обычно это Indy Core и Indy Protocols). Снимаем с них пометки, после чего удаляем с помощью кнопки Remove. Таким образом, мы удалили пакет из IDE. Также, исключим пути к старым файлам. Для этого откроем Tools -> Options -> Environment Options -> Delphi Options -> Library -Win32 и удалим все пути, в которых упоминается слово Indy. Теперь необходимо удалить исходные коды и библиотеки. Закрываем RAD Studio и переходим в папку, в которую она была установлена. По умолчанию, RAD Studio 2010 устанавливается в папку: C:\Program Files\Embarcadero\RAD Studio\7.0. Для того, чтобы больше не останавливаться на этом пути, обозначим его переменной RS. В папке RS\Sources\Indy находятся исходные коды Indy. Удаляем эту папку. В папке RS\Include\Indy могут находится заголовочные файлы Indy. Удаляем эту папку. В папке RS\Lib находятся библиотеки Indy. Удаляем все файлы, которые принадлежат к Indy (для этого выполним поиск по файлам, содержащим в себе фразу "Indy") Как правило, в папке RS\.. лежат также файлы справки, примеры и др. файлы, связанные с Indy. Если хотите, можете удалить и их (но не увлекайтесь, мы удаляем только Indy) Вот мы и удалили старые версии. Пора обзавестись новыми. Репозиторий Indy расположен по адресу: https://svn.atozed.com:444/svn/Indy10/ Для доступа будет использовать публичное имя пользователя: Indy-Public-RO Пароль не нужен. Перед нами стоит задача скачать всё содержимое папок. Для этого советую воспользоваться бесплатным SVN клиентом TortoiseSVN: Указываем ссылку на репозиторий и папку, в которую будем скачивать Indy (для этих целей я использовал ту папку, в которую установлена RAD Studio): Ждём завершения процесса закачки.
После завершения начинается самое интересное... Компоненты Indy написаны для использования в Delphi. Но это не значит, что мы не воспользуемся ими в С++ Builder. Итак, открываем RAD Studio (именно её, если планируется пользование компонентами и в С++ Builder). Если был открыт проект по умолчанию - его нужно закрыть. Папку, куда мы экспортировали репозиторий Indy назовём переменной RIndy Переходим к Tools -> Options -> Environment Options -> Delphi Options -> Library -Win32 и в Library Path добавляем 3 пути:
Добавим в проектную группу те файлы, которые нам понадобятся для установки. Для этого просто откроем файлы в следующей последовательности:
X - Версия вашей RAD Studio (для 2010 - это число 14). Для того, чтобы компонентами можно было воспользоваться в С++ Builder перейдём в свойства проекта каждого из пяти добавленных пакетов: Project -> Options -> Delphi Compiler -> Linking -> Linker Output и выберем опцию Generate all C++ Builder files (including package libs). Сохраним проектную группу (для того, чтобы в случае неудачи не повторять одни и те же действия).
Осталось выполнить компиляцию и установку. Для первых трёх пакетов (IndySystemX0.dpk, IndyCoreX0.dpk, IndyProtocolsX0.dpk) выполняем: Project -> Compile. Для оставшихся двух (dclIndyCoreX0.dpk, dclIndyProtocolsX0.dpk) выполняем: Install. Если всё выполнено правильно, то будет выведено сообщение о том, что компоненты были установлены. Примечание 1: При первом запуске приложения с новыми компонентами, IDE возможно запросит путь к заголовочным файлам и выведет вам окно поиска. Для Indy укажите: RIndy\Branches\Tiburon\Lib\Core Примечание 2: В случае, когда компилятор по неизвестной причине не сгенерировал какой-либо *.hpp или *.dcu файл, получить его можно вручную. Для этого, в командной строке необходимо перейти в каталог с файлом (либо указать абсолютный путь) и выполнить следующую команду (пример для файла IdStruct.pas):
Данная статья позволит Вам узнать внутреннее устройство библиотеки визуальных компонентов, познакомится с иерархией основных классов в VCL, научиться различать типы компонентов. Также, Вы научитесь удалять и устанавливать компоненты. Полезным окажется возможность использования компонентов, предназначенных для Delphi в среде С++ Builder. ________________________________________ _________ С уважением, Михаил (a.k.a MikeSoft)
29
|
|||||||||||
| 30.07.2010, 00:56 | |
|
Ответы с готовыми решениями:
0
Установка компонентов Visual Studio Компактная установка Visual Studio с минимальным набором компонентов Установка/удаление Microsoft Visual C++ 2005 |
| 30.07.2010, 00:56 | |
|
Помогаю со студенческими работами здесь
1
Удаление класса изнутри
Установка Xpages Extension Library Установка Extension Library На Client 8.5.2 Visual c++Runtime Library Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|