Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Создание новых визуальных компонент

Автор: Scorp_Freeman 26.07.2006 18:14

Как создать новый визуальный компонент?
Хочу сделать простенький графический редактор в целях изучения графических возможностей Делфи но затрудняюсь с реализацией некоторых функций и событий:

- Нарисованные линии выделять кликом мыши;
- Удалять после выделения;
- Чтобы при наведении на нарисованную линию курсора мыши та выделялась и теряла выделение при дальнейшем перемещении курсора

Думаю, может нужно создать какие-то объекты которые отвечали за нарисованные линии или как?

Автор: hardcase 27.07.2006 13:52

Создать компонент очень просто:
Меню - Components - NewComponent

Потом нужно выбрать класс-предок, и указать класс потомок. Система создаст модуль-"рыбу".

Совет создавай компонент в контексте какогонибудь проекта - будет удобно отлаживать - и не нужно регистрировать компоненту для работы.

Т.е. ты создаёшь обычный проект и подключаешь к нему модуль своей компоненты. Во время работы ты должне самостоятельно создавать свою компоненту, вызывая конструктор и указывая значения свойств Parent, Name, Left, Top и др.

С Делфи уже поставляются примеры компонент - TGauge (вкладка Samples) - посмотри его код.

по линиям.
Советую сначала механизм рисования линий реализовывыть не в компоненте - меньше проблем будет, а например на том же TPaintBox-е. Если сделаешь на его основе, то сможешь смело завернуть это в контрол пронаследованный от TPaintBox.

Попробуй использовать регионы (во всяком случае GDI+ умеет определять на каком регионе было кликнуто)

Автор: Scorp_Freeman 27.07.2006 14:14

Цитата
Попробуй использовать регионы

А кратко что такое регион?

Автор: volvo 27.07.2006 18:43

Лучше скачай http://forum.pascal.net.ru/index.php?showtopic=6361 и посмотри там статью о работе с регионами (да и вообще в этой базе есть много полезной информации)...

Автор: Scorp_Freeman 29.07.2006 16:37

Попробую скачать, хотя будет проблематично с такой скоростью как у меня, 10 метров все таки..