Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2013, 00:25   #1
LuckyD
 
Регистрация: 09.04.2013
Сообщений: 7
По умолчанию Как создавать компонент Delphi

Добрый день. Нужно создать компонент, в котором будут собраны несколько элементов управления, какой правильный порядок действий. Подскажите в чем ошибка. Порядок действий вроде стандартный.
Среда DELPHI XE3

1. Создаю папки проекта и компонента.
2. FILE\NEW\VCL FORM APPLICATION
3. Component \New Component ...
  • на основе: TPanel
    Class Name: TPanel1
    Palette name: Samples
    Unit name : Папка моего компонента\TPanel1.pas
    Search path: ???? Поле пустое по умолчанию, что в него писать ???
4. Install new Package
  • Package name: \MyComp\TPanel1.dpk
    Description: бла бла бла
5. Finish - сохраняю TPanel1.pas в папке моего компонента.

ВНЕЗАПНО - Сообщение об ошибке:
----------------------------------------------------------------------
Unit "Panel1.pas" references the "Visual Component Library" framework, but the project currently has no framework assigned. Do
you want to enable the "Visual Component Library" framework for this project?

(Not enabling the proper framework may require unit scoping, ambiguities, and linkage to framework binaries to be handled
manually)

[Yes][No][Cancel]

----------------------------------------------------------------------
Я так понимаю, предлагает сделать VCL основой моего компонента. Жму ОК.

Компиляция .... сообщение:
-----------------------------------------------------------------------
Package .... as been installed.
The following new component(s) have been registered: TPanel1.
[OK]

-----------------------------------------------------------------------

6. Типа все ОК. Panel1.pas. Во вкладке Samples видно мой компонент.
7. Перекидываю его в форму .... компилирую. Сообщение:
-----------------------------------------------------------------------
Cannot run project unless a host application is defined. Use Run|Parameters ... Dialog box.
[OK]

-----------------------------------------------------------------------
Просит выбрать приложение-хост.

Дальше что делать? Мое приложение выбрать я не могу, поскольку оно еще не скомпилировалось,
и мне кажется что-то неправильно делаю, поскольку судя по мануалу http://www.interface.ru/fset.asp?Url...d5_2prraz1.htm они вместе компилироваться должны. Тем более я уже перетащил компонент в форму.


Много вопросов по этой этой теме:
1. Мне нужно создать компонент, в котором будут собраны несколько элементов управления, какой правильный порядок действий.
2. ссылку на хорошу инфу по созданию компонентов в DELPHI XE3, в инете в основном нахожу по 7 Delphi и кажется что есть различия.
3. Что писать в Search path пункт 3.
4. Как перейти в режим визуального редактирования элемента, в результате описанных действий,
визуальное редактирование было недоступно для Panel1.pas
5. Чем отличается на практике Install new Package от Install existing Package
6. Как подключить нвый компонент в случае выбора Create new Package
7. Утром идешка меня озадачивала, не добавляя новый компонент в палитру и сообщая об ошибке компиляции "не найден TPanel1",
хотя я точно выбирал не пункт Create new Package.

Вот такие непонятки, буду признателен за разъяснение.

Последний раз редактировалось LuckyD; 14.04.2013 в 00:35.
LuckyD вне форума Ответить с цитированием
Старый 14.04.2013, 10:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Cannot run project unless a host application is defined. Use Run|Parameters ... Dialog box.
Что ты запускаешь? Явно не исполняемое приложение. Еще раз закрой все проекты, открой тот что с формой, и запускай его. Уверен что ты пытаешься запускать сам компонент, который после компиляции и установки по умолчанию оказался активным проектом. Обычно я закрываю проект компонентов, но можно еще в инспекторе проектов выбрать активным запускаемое приложение.
Цитата:
и кажется что есть различия.
Не очень большие. Так что можешь той инфой пользоваться.
Цитата:
Что писать в Search path
Там по-моему пишутся пути, где Делфи будет искать исходники компонента и скомпилированный DCU
Цитата:
Как перейти в режим визуального редактирования элемента
Что значит "режим визуального редактирования"?
Цитата:
Чем отличается на практике Install new Package от Install existing Package
Install new Package создает новый пакет, куда помещается информация о компоненте и его исходник, а Install existing Package просит тебя выбрать уже существующий пакет, и дописывает к его компонентам твой.
Второе обычно выбирают, когда хотят допилить набор компонентов каким нить новым без особых изменений самой палитры.
Цитата:
Как подключить нвый компонент в случае выбора Create new Package
Подключить куда?
Цитата:
идешка меня озадачивала, не добавляя новый компонент в палитру
Значит не скомпилировал его и не установил. Смотри есть ли твой пакет в Components - Installed Packages
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2013, 12:00   #3
LuckyD
 
Регистрация: 09.04.2013
Сообщений: 7
По умолчанию Как создать приложение с несколькими компонентами

Осталось 2 вопроса.
1. Почему Unit1 в Uses не видит TMyPanel. Возможно это связано с размещением TMyPanel в подкаталоге.

2. Визуальное редактирование: по идее должно быть окно рисования компонента, в котором можно размещать другие элементы - составляющие моего проекта. Чтобы после размещения моего компонента в форме приложение, они все кучей появились в приложении. Или как?

Сейчас я пытаюсь делать компонент на основе TPanel, чтобы накидать в него других компонентов, но в MyPanel1.pas кнопка Toggle Form\Unit недоступна.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Уверен что ты пытаешься запускать сам компонент, который после компиляции и установки по умолчанию оказался активным проектом.
Спасибо, действительно в инспекторе проектов через контекстное меню можно назначить активный проект Project Manager\From Here\Compile All From Here

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

Получается такая картина. Структура проекта:
Код:
MyProject1\ProjectGroup1.groupproj   // Группа проектов  приложения
MyProject1\Project1.dproj            // Проект основного приложения
MyProject1\Unit1.pas                 // Модуль основного приложения
MyProject1\MyComponents.dproj        // Пакет компонентов проекта, создаю его Install new Package, при создании первого
                                     // Компонента, а последующие компоненты добавляю в него через Install existing Package
MyProject1\TMyPanel1\MyPanel1.pas    // Модуль первого компонента
MyProject1\TMyPanel2\MyPanel2.pas    // Модуль второго компонента
Search path - поле для поиска компонентов, Delphi вроде как сама заполняет его. http://www.delphimaster.ru/articles/...nts_gauge.html

Если все делать по порядку: Создавать package первого компонента в папке с проектом и последующие компоненты добавлять в него, то вновь созданные компоненты в палитре компонентов появляются нормально. Удалить их потом можно через меню Component\Install Packages ...

Последний раз редактировалось LuckyD; 14.04.2013 в 13:35.
LuckyD вне форума Ответить с цитированием
Старый 14.04.2013, 14:45   #4
LuckyD
 
Регистрация: 09.04.2013
Сообщений: 7
По умолчанию

По поводу создания сложных компонентов - исчерпывающе
http://www.compress.ru/article.aspx?id=9739&iid=411
нужно прописывать ручками - "Было бы удобно поместить наши элементы управления на какую-либо форму и затем создать из них компонент. В стандартной поставке Delphi такой эксперт отсутствует. Поэтому необходимо будет создавать компоненты самим и размещать их на панели. "

Последний вопрос - как сделать чтобы Unit1 в Uses видел TMyPanel, если файл модуля компонента находится в поддиректории.
LuckyD вне форума Ответить с цитированием
Старый 14.04.2013, 14:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему Unit1 в Uses не видит TMyPanel. Возможно это связано с размещением TMyPanel в подкаталоге.
Допустим путь к нему не прописал в настройках.
Цитата:
они все кучей появились в приложении. Или как?
Или не морочить геморрой моска и использовать более подходящий для этого TFrame.
И компонент отдельно выдумывать не придется - получишь свою а-ля панель с накиданными на ней другими компонентами.
Цитата:
Как создать приложение с несколькими компонентами, причем внутри каждого компонента должны быть несколько других стандартных компонентов, например поле ввода и кнопка, и чтобы это все вместе компилировалось?
Читаем, вкушаем, внимаем легенды о TFrame )
Серьезно, не шучу и без сарказма. Сам его часто юзаю в таких ситуациях.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно создавать запросы в Sql из Delphi 7 MixanMM БД в Delphi 13 20.07.2010 13:29
Как установить компонент на Delphi 2007 Kostia Компоненты Delphi 7 06.04.2010 16:11
Как установить компонент в Delphi 2007? juan666777 Общие вопросы Delphi 2 08.06.2009 22:10
Как добавить компонент в Delphi? Evgenii Компоненты Delphi 2 07.02.2009 12:55
Как в Delphi создавать и использовать скины для програм SeRhy Помощь студентам 3 20.12.2007 20:59