Создание класса на основе TCustomControl
От: Dazz  
Дата: 24.09.03 20:30
Оценка:
Как написать класс на основе TCustomControl типа TButton, но с несколькими возможными состояниями (т.е рисует на себе обну картинку, если мыша на нем, и другую, если мыша с него съехала) и не квадратный.
Re: Создание класса на основе TCustomControl
От: ArtDenis Россия  
Дата: 25.09.03 03:44
Оценка:
Здравствуйте, Dazz, Вы писали:

D> Как написать класс на основе TCustomControl типа TButton, но с

D> несколькими возможными состояниями (т.е рисует на себе обну картинку,
D> если мыша на нем, и другую, если мыша с него съехала) и не квадратный.

Для мышки обрабатывай события CM_MOUSEENTER и CM_MOUSELEAVE.

Чтобы сделать компонент непрямоугольным, есть два пути:

1. Рисуешь непрямоугольную кнопку на прямоугольном компоненте
2. Используешь функцию WinAPI SetWindowRgn, предварително создав регион
нужной формы.

А вообще, лучше воспользуйся готовым компонентом, сходив на сайт
http://www.torry.net/

---------------------------------------------------------
СНП, Artyomov Denis. E-mail: artyomov <at> inbox.ru
Posted via RSDN NNTP Server 1.7 "Bedlam"
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Создание класса на основе TCustomControl
От: Dazz  
Дата: 25.09.03 07:02
Оценка:
Здравствуйте, ArtDenis.

А что нужно вообще сделать, для того, чтобы создать компонент (надо ли там регистрировать класс окна или что-либо подобное)? В справке Delphi об этом сказано как-то очень невнятно.
Re[3]: Создание класса на основе TCustomControl
От: ArtDenis Россия  
Дата: 25.09.03 07:16
Оценка:
Здравствуйте, Dazz, Вы писали:

D>Здравствуйте, ArtDenis.


D>А что нужно вообще сделать, для того, чтобы создать компонент (надо ли там регистрировать класс окна или что-либо подобное)? В справке Delphi об этом сказано как-то очень невнятно.


Всё очень просто.

1. Для начала лучше всего создать проект для своих компонентов. (File->New->Package)
2. Создаём компонент. (File->New->Component)
3. Указываем, что он должен быть наследником TCustomControl
4. Выносим нужные свойства в published секцию.
5. Добавляем свои свойства и методы.
6. Пишем свои процедуры для Paint, Resize, Click, CreateParams (если это требуется), не забывая при этом вызывать процедуру предка.
7. Делаем Install.
8. Отлаживаем (отлаживается компонент, как обычный DLL-код)
9. Усё... Можно продавать (если купят)

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

Денис.
... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Создание класса на основе TCustomControl
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.09.03 09:42
Оценка:
Здравствуйте, Dazz, Вы писали:
D>А что нужно вообще сделать, для того, чтобы создать компонент (надо ли там регистрировать класс окна или что-либо подобное)? В справке Delphi об этом сказано как-то очень невнятно.
Ну, для начала можно почитать RSDN. См. раздел Статьи\Delphi. Например, вот здесь
Автор(ы): Михаил Голованов
Дата: 27.05.2003
В статье рассматриваются основные стадии построения компонентов Delphi на примере создания собственного controla-а.
.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Создание класса на основе TCustomControl
От: Dazz  
Дата: 26.09.03 04:00
Оценка:
Здравствуйте, ArtDenis.

Я очень извиняюсь за свои тормоза, но помогите плз!

Обычно рассказано, как изменять уже созданный компонент (н-р TLabel или еще что нибудь). А меня интересует, как его создать с "нуля", т.е. именно с TCustomControl. Т.е. здесь надо еще как-то создать оконный елемент со всякими свойствами типа фон, размеры, возможная рамка, курсор опять же. А вот это у меня и не получается!
Re[5]: Создание класса на основе TCustomControl
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.09.03 04:21
Оценка:
Здравствуйте, Dazz, Вы писали:

D>Обычно рассказано, как изменять уже созданный компонент (н-р TLabel или еще что нибудь). А меня интересует, как его создать с "нуля", т.е. именно с TCustomControl. Т.е. здесь надо еще как-то создать оконный елемент со всякими свойствами типа фон, размеры, возможная рамка, курсор опять же. А вот это у меня и не получается!

А ты подсмотри в исходниках того же TLabel. Там все есть. Вообще вся VCL поставляется в исходниках.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Создание класса на основе TCustomControl
От: ArtDenis Россия  
Дата: 26.09.03 04:26
Оценка:
Здравствуйте, Dazz, Вы писали:
D>...
D> Обычно рассказано, как изменять уже созданный компонент (н-р TLabel или
D> еще что нибудь). А меня интересует, как его создать с "нуля", т.е.
D> именно с TCustomControl. Т.е. здесь надо еще как-то создать оконный
D> елемент со всякими свойствами типа фон, размеры, возможная рамка, курсор
D> опять же. ...

Чтобы создавать компонент с нуля, надо наследоваться от TControl — для
визуальных и от TComponent — для невизуальных контролов. Если ты наследуешся
от TCustomControl, то базовый класс автоматически создаёт оконный элемент.
Если ты хочешь участвовать в создании контрола, ты должен переопределить
процедуру CreateParams. Стандартные виндовые контролы рисуют себя сами. В
твоём же случае, нужно использовать процедуру Paint для рисования. Если не
хочешь парится с рисованием всяких бордеров, посмотри ф-ю DrawFrameControl
(она есть только под винды).


---------------------------------------------------------
СНП, Artyomov Denis. E-mail: artyomov <at> inbox.ru
Posted via RSDN NNTP Server 1.7 "Bedlam"
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.