|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|||||||||||
Visual Component Library: Вид изнутри, удаление и установка компонентов30.07.2010, 00:56. Показов 80437. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|