C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
Компонент на основе нескольких других
Страниц: [
1
]
Вниз
Печать
Автор
Тема: Компонент на основе нескольких других (Прочитано 5669 раз)
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Компонент на основе нескольких других
«
:
25 Июнь 2014, 21:29:48 »
Привет всем. Подскажите, как создать визуальный компонент на основе других компонентов. Чтобы созданный компонент был на палитре, добавлялся на форму как стандартный и настраивался в инспекторе объектов. Например, необходим компонент, который состоит из панели (TPanel), на которой слева расположен компонент TImage, а справа TLabel.
Подскажите как или отправьте куда надо...
Записан
SilverFish
Участник
Сказали спасибо: +14/-6
Offline
Сообщений: 786
Re: Компонент на основе нескольких других
«
Ответ #1 :
25 Июнь 2014, 21:43:00 »
Конкретно ваш вопрос, а также подробное создание компонентов рассмотрено в книге:
Borland C++ Builder. Энциклопедия программиста. Platinum Edition
Авторы: Чарли Калверт, Кент Рейсдорф
Книга есть в сети в электронном виде. Например, здесь можно скачать старый вариант книги: http://biblioteka.cc/index.php?newsid=42774
Однако теория разложена по полочкам и в этом издании.
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Компонент на основе нескольких других
«
Ответ #2 :
25 Июнь 2014, 22:33:38 »
Массово программил только под билдером 6 и 2007. Использую исходник пустого компонента автоматически сгенеренный 6м билдером... 2007 как-то давно обидел меня создав ересь. Сейчас на базе того компонента пишу под все билдеры... это к слову как создать.
А по поводу "на базе других компонентов" - так компонент это просто объект какого-то класса. Тебе лишь надо его динамически создать. Какие сложности?
В подарок к "совету" мой компонент.
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #3 :
28 Июнь 2014, 14:31:28 »
Спасибо за пример компонента. Однако, не компилируется. Не находит файл vektor.h...
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Компонент на основе нескольких других
«
Ответ #4 :
28 Июнь 2014, 14:46:30 »
У тебя какая версия билдера?
попробуй что-то типа
#include
и т.п... поищи в хелпе как в данной бибилиотеке С++ инклудится это файло. Это стандартная вещь.
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #5 :
30 Июнь 2014, 17:51:03 »
В XE все получилось, а вот в XE4 ошибки. Думаю это уже не важно. Буду на Вашем примере создавать свой компонент. Спасибо за помощь!
«
Последнее редактирование: 30 Июнь 2014, 17:59:18 от d7d1cd
»
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #6 :
02 Июль 2014, 18:18:31 »
Как говорится, поковырялся, поковырялся в системе и... не получилось. Делаю так:
1. Component - New Component...
2. Выбираю предка для моего нового компонента (TPanel), жму Next;
3. Задаю имя класса для моего нового компонента (TMyPanel);
4. Palette page оставляю без изменений (Samples);
5. В Unit name задаю путь (D:\Документы\RAD Studio\TMyPanel\TMyPanel.cpp);
6. Search path оставляю пустым, жму Next;
7. Выбираю Create Unit, жму Finish.
8. Нажимаю кнопку сохранения и сохраняю файл TMyPanel.cpp по выше указанному пути. Это как то странно, ведь система меня спрашивала в 5 пункте куда сохранять, однако не сохранила ничего в эту папку.
В итоге я вижу в файле TMyPanel.h заготовку моего нового компонента. Далее я хочу этот пустой компонент инсталлировать в систему. Замечу, что я ничего не писал в коде. Инсталлирую так:
1. Component - Install Component...
2. В поле Unit file name(s) выбираю файл TMyPanel.cpp;
3. Выбираю Install into a new package, жму Next;
4. Package name задаю D:\Документы\RAD Studio\TMyPanel\TMyPanel;
5. Выбираю С++Builder package, жму Finish.
Система делает компиляцию и пишет, что компонент успешно установлен, однако я не нахожу компонент TMyPanel на вкладке Samples. Этого компонента вообще нет на палитре. Подскажите, что я не так делаю?
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Компонент на основе нескольких других
«
Ответ #7 :
02 Июль 2014, 19:19:24 »
Когда-то когда я только начинал экспериментировать со своими компонентами (под 6м билдером), случалось так, что косячно установленный компонент устанавливается после сноса. "Стоял" он хорошо, в Component->InstallPackege был виден, в палитре якобы должен был присутствовать, но по факту его было видно. Т.е. проекты с таким компоннетом исправно работали, копоненты на форме есть, динамически создать можно. Но на палитре не были видны.
С 2007 билдера такого не наблюдал.
«
Последнее редактирование: 06 Июль 2014, 18:30:15 от POV
»
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Компонент на основе нескольких других
«
Ответ #8 :
02 Июль 2014, 19:25:38 »
В наличие билдера нет, а на 2010 Delphi всё вышло.
Создал компонент (только сам *.pas файл компонента), создал паккадж, куда файл компонента добавил. Откомпилял, проинсталил - и вот он на палитре виден. Да.. пути я никакие не менял при создании компонента. Куда надо я его сохранил уже после создания.
«
Последнее редактирование: 06 Июль 2014, 18:30:33 от POV
»
Записан
SilverFish
Участник
Сказали спасибо: +14/-6
Offline
Сообщений: 786
Re: Компонент на основе нескольких других
«
Ответ #9 :
02 Июль 2014, 22:19:13 »
Цитировать
Как говорится, поковырялся, поковырялся в системе и... не получилось.
Еще раз. Ваш вопрос по полочкам разложен в вышеуказанной книге.
Глава 2 стр.53
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Компонент на основе нескольких других
«
Ответ #10 :
03 Июль 2014, 08:31:12 »
Вот в несколько кликов сделал компонент типа TPanel1 в 2007 билдере. Всё видно на палитре.
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #11 :
03 Июль 2014, 17:38:28 »
Спасибо за помощь. Буду читать, изучать.
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #12 :
04 Июль 2014, 19:19:29 »
Ребят, ну какая то ж... прям!
У меня С++Builder XE4. Пытаюсь создать "пустой" компонент на основе TPanel. Все делаю в точности как в Builder XE. Однако, если в XE все получается, то в XE4 я получаю ошибку:
[ilink32 Error] Fatal: Unable to open file 'C:\Documents and Settings\All Users\Документы\RAD Studio\11.0\BPL\MyPanel.pdi'
Этот файл (MyPanel.pdi) при компиляции не создается вообще нигде. Вопрос: почему линкер его требует и как все это исправить?
P.S. Пробовал установить компонент TExpand от господина POV. В XE все получается, в XE4 выше обозначенная ошибка. Пробовал создать Package (File - New - Package) и тут же скомпилировать - и опять выше указанная ошибка.
Записан
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
Re: Компонент на основе нескольких других
«
Ответ #13 :
07 Июль 2014, 07:58:43 »
А надо указывать в опциях проекта пути к создаваемым файлам - см. Project -> Options ->
-> BPI/LIB Output, ... -> Final output directory, ... -> Intermediate output. Везде можно поставить одну папку, например ".\BPL" (папка BPL будет создана в корне папки проекта).
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #14 :
07 Июль 2014, 17:39:37 »
Цитата: S0mbre от 07 Июль 2014, 07:58:43
А надо указывать в опциях проекта пути к создаваемым файлам - см. Project -> Options ->
-> BPI/LIB Output, ... -> Final output directory, ... -> Intermediate output. Везде можно поставить одну папку, например ".\BPL" (папка BPL будет создана в корне папки проекта).
Спасибо за помощь!
Пока все получилось ))
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #15 :
09 Июль 2014, 18:28:27 »
Назрел вопрос: после создания своего компонента (написания кода и компиляции), для переноса на другой компьютер и установки этого компонента в систему программирования, мне необходимы будут файлы *.bpl, *.bpi и *.h. Верно?
Записан
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
Re: Компонент на основе нескольких других
«
Ответ #16 :
10 Июль 2014, 07:02:39 »
Цитата: d7d1cd от 09 Июль 2014, 18:28:27
Назрел вопрос: после создания своего компонента (написания кода и компиляции), для переноса на другой компьютер и установки этого компонента в систему программирования, мне необходимы будут файлы *.bpl, *.bpi и *.h. Верно?
Да. И возможно *.res, если есть.
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: Компонент на основе нескольких других
«
Ответ #17 :
29 Август 2014, 12:48:18 »
Подскажите, где в настройках системы указать путь к моим файлам нового компонента (bpl, bpi и h). И еще: если мне понятно назначение файла h, то файлы bpl и bpi для меня загадка. Расскажите, зачем их 2 штуки? Разве нельзя было все "запихнуть" в 1 файл?
Записан
SilverFish
Участник
Сказали спасибо: +14/-6
Offline
Сообщений: 786
Re: Компонент на основе нескольких других
«
Ответ #18 :
25 Февраль 2015, 10:45:51 »
Кто успел скачать вышеописанную книгу
Borland C++ Builder. Энциклопедия программиста. Platinum Edition
по этой ссылке: http://biblioteka.cc/index.php?newsid=42774 выложите пожалуйста для доступа, а то по этой ссылке книга стала недоступна.
Спасибо.
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...