26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
1

как создать свой компонент

26.08.2010, 19:25. Показов 8839. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется код, в котором, на основе стандартных компонентов, создан свой, к примеру статусбар с дробным процентом.... Как создать свою кнопку на панели компонентов с этим новым компонентом?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2010, 19:25
Ответы с готовыми решениями:

Создать свой компонент в c++builder6 (на основе TStringGrid)?
Построить класс - потомок класса TStringGrid, объект которого при нажатии клавиши F11 выводит в...

Как вставить свойство типа Option в свой компонент?
Здравствуйте! Вопрос в следующем. Как вставить свойство типа Option в свой компонент? Поясняю:...

Сделать свой VCL-компонент
- Здравствуйте Завсегдатаи! Хочу попросить Вашего совета в одном вопросе. Конструирую свой...

Перетаскивание файлов на свой компонент
Создаю свой компонент. Как в нем реализовать перетаскивание файлов на него. Проблема в том что...

8
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
26.08.2010, 20:50 2
Советую почитать Borland C++Builder.Освой самостоятельно.
Там есть раздел создание компонентов.
И новый компонент сам расположиться в панели компонентов.
2
26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
27.08.2010, 20:37  [ТС] 3
Полистав материал (Borland C++ Builder. Освой самостоятельно.), хочу спросить, только ли при наличии в конструкторе компонентов в комбинированном списке Ancestor Type класса TCustomМойБудущийБазовыйКомпонент, я смогу создать компонент на базе компонента МойБудущийБазовыйКомпонент? Я хочу на базе Image сделать компонент, но там нет в Ancestor Type класса TCustomImage.
0
26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
29.08.2010, 16:22  [ТС] 4
Идей нет? неужто никто не писал свой компонент?
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
29.08.2010, 16:28 5
sitesv, install component должен вам помочь
0
26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
29.08.2010, 16:39  [ТС] 6
немного не то, как взять за основу TImage ?
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
29.08.2010, 18:16 7
Лучший ответ Сообщение было отмечено как решение

Решение

sitesv, почитайте о классах в целом и о наследовании, в частности.

Теперь непосредственно к вашей проблеме.

Описываем в заголовочном файле свой класс-потомок от TImage:
C++
1
2
3
4
5
6
7
class TMyImage : public TImage
{
  __published:  // IDE-managed Components
  private:  // User declarations
  public:       // User declarations
    __fastcall TMyImage(TComponent* Owner);
};
Определяем конструктор:
C++
1
2
3
4
__fastcall TMyImage::TMyImage(TComponent* Owner) : TImage(Owner)
{
  // необходимые действия, если они вам нужны...
}
И дальше создаём объекты и работаем, как с обычными динамически созданными компонентами:
C++
1
2
TMyImage *MyImage = new TMyImage(this);
MyImage->Parent = this;
3
26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
30.08.2010, 16:12  [ТС] 8
Так и сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef ImgPersH
#define ImgPersH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TImgPers : public TImage
{
private:
protected:
public:
        __fastcall TImgPers(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "ImgPers.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TImgPers *)
{
        new TImgPers(NULL);
}
//---------------------------------------------------------------------------
__fastcall TImgPers::TImgPers(TComponent* Owner)
        : TImage(Owner)
{
}
//---------------------------------------------------------------------------
namespace Imgpers
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TImgPers)};
                 RegisterComponents("Samples", classes, 0);
        }
}
__fastcall TImgPers :: TImgPers(TComponent* Owner) : TImage(Owner)
{
        TImgPers *MyImage = new TImgPers(this);
        MyImage->Parent = this;
}
В ответ 2 ошибки:
1. Body has already been defined for function '__fastcall TImgPers(TComponent* Owner)' (тело для этой функции уже было определено)
2. Cannot convert 'TImgPers *const' to 'TWinControl *'

Добавлено через 6 часов 16 минут
MikeSoft, help))
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
09.06.2013, 16:58 9
sitesv, вот вам ссылка , там все подробно описано
0
09.06.2013, 16:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2013, 16:58
Помогаю со студенческими работами здесь

Свой компонент в tool palette
Подскажите как засунуть свой компонент, основанный на TFrame, в палитру где кнопки, мемо и прочее.....

Как создать свой скин для программы...
Многие программы используют скины, выполненные в виде одной картинки, на которой нарисованы все...

Как создать компонент наподобие TrackBar
Необходимо создать компонент наподобие TrackBar, пример необходимого компонента на картинке.

Как динамически создать компонент CppWebBrowser
Создаю динамически форму (newform), на ней динамически создаю копонент CppWebBrowser (Browser). Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru