Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3

Добавить свойства стороннему компоненту

27.11.2014, 18:15. Показов 2406. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Использую сторонние компоненты Alpha, там есть отличный компонент TFrameBar, что унаследован от компонента TsSpeedButton (который в свою очередь слеплен с обычного TSpeedButton) ....
У UI подсмотрел вариант как делать перехватчики, ...сделал, прописал..но компонент все равно не находит свойство.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace PoisonText
{
    class TsTitleButton : public System::Classes::TCollectionItem
    {
    private:
        AnsiString FSelectIndex;
 
    public:
    __fastcall virtual TsTitleButton(System::Classes::TComponent* AOwner);
        __property AnsiString SelectIndex= { read=FSelectIndex, write=FSelectIndex };
    };
}
#define TTitleButton PoisonText::TsTitleButton
PS..писать в поддержку самого ресурса Alpha бесполезно, уже понял
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2014, 18:15
Ответы с готовыми решениями:

Можно ли на компоненту Мемо добавить компоненту Image?
Можно ли на компоненту Мемо добавить компоненту Image??? И как это делается?

Возможно ли добавить свое свойство к компоненту
Чтобы оно работало как все другие, которые во вкладке Properties

Как добавить компоненту новое свойство используя класс-перехватчик?
Всем здравствуйте. Ознакомился с содержимым статьи volvohttps://www.cyberforum.ru/cpp-builder/thread1368916.html. Статья очень...

25
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 01:47
Приведи код использования, т.е. код создания объекта класса и код где "компонент все равно не находит свойство" и ошибку компилятора.
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
28.11.2014, 10:52
Dinkin, а конструктор переопределить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace PoisonText
{
    class TsTitleButton : public System::Classes::TCollectionItem
    {
    private:
        AnsiString FSelectIndex;
 
    public:
    __fastcall virtual TsTitleButton(System::Classes::TComponent* AOwner)
        : System::Classes::TCollectionItem( AOwnew ) {}; // Собственно
        __property AnsiString SelectIndex= { read=FSelectIndex, write=FSelectIndex };
    };
}
#define TTitleButton PoisonText::TsTitleButton
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.11.2014, 14:06
Собственно, я не понял две вещи:
1) при чем тут класс-перехватчик? Перехватчики используются не для того, чтобы конструировать новые компоненты, а для того, чтобы в какой-то определенный компонент добавить нужный функционал. Вот если бы было

C++
1
class TsTitleButton : public SomeNamespace::TsTitleButton
, я бы понял, а так - извини, нет...
2) что за
Цитата Сообщение от SatanaXIII Посмотреть сообщение
AOwnew
?
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 14:43  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Перехватчики используются не для того, чтобы конструировать новые компоненты, а для того, чтобы в какой-то определенный компонент добавить нужный функционал.
Именно для этого мне и нужно,добавит новый функционал

Цитата Сообщение от SatanaXIII Посмотреть сообщение
namespace PoisonText
{
* * class TsTitleButton : public System::Classes::TCollectionItem
* * {
* * private:
* * * * AnsiString FSelectIndex;
public:
* * __fastcall virtual TsTitleButton(System::Classes::TComponen t* AOwner)
* * * * : System::Classes::TCollectionItem( AOwner ) {}; // Собственно
* * * * __property AnsiString SelectIndex= { read=FSelectIndex, write=FSelectIndex };
* * };
}
#define TTitleButton PoisonText::TsTitleButton
на 10 строку
C
1
E2285 Could not find a match for 'TCollectionItem::TCollectionItem(TComponent *)'
а сам код создания таков

C
1
2
3
sFrameBar1->Items->Add();
sFrameBar1->Items->Items[sFrameBar1->Items->Count-1]->TitleButton->Caption="123";
sFrameBar1->Items->Items[sFrameBar1->Items->Count-1]->TitleButton->......// тут должен быть FSelectIndex
Добавлено через 3 минуты
Временно (но знаю что не верно и так луче не делать) в самом компоненте передела свойства Tag с int на UnicodeString, этим и пользуюсь
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.11.2014, 14:54
Цитата Сообщение от Dinkin Посмотреть сообщение
Именно для этого мне и нужно
В таком случае, приведи описание того класса, в который тебе надо добавить это самое свойство (у меня Alpha-контролов нет, сам посмотреть не могу), покажу, как сделать...
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 14:59  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
В таком случае, приведи описание того класса,
то есть сам .h файл?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.11.2014, 15:02
Можно не весь файл, меня интересует только описание класса компонента... И то, в каком он namespace находится. Будет весь *.h - еще лучше...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 15:13  [ТС]
сам namespace вот, он находится во sFrameBar.hpp и ссылается на sSpeedButton.hpp

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class DELPHICLASS TsTitleButton;
class PASCALIMPLEMENTATION TsTitleButton : public Sspeedbutton::TsSpeedButton
{
    typedef Sspeedbutton::TsSpeedButton inherited;
 
 
protected:
    TsFrameBar* FOwner;
    bool Active;
    
public:
    TsTitleItem* TitleItem;
    __fastcall TsTitleButton(TsFrameBar* AOwner, int Index);
    __fastcall virtual TsTitleButton(System::Classes::TComponent* AOwner);
    __fastcall virtual ~TsTitleButton(void);
    virtual int __fastcall CurrentState(void);
    __property TextAlignment = {default=0};
    __property OnClick;
};
Вложения
Тип файла: txt sSpeedButton.txt (8.5 Кб, 2 просмотров)
Тип файла: txt sFrameBar.txt (10.1 Кб, 2 просмотров)
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 15:27
Все пытаюсь понять почему ваш TsTitleButton наследуется от System::Classes::TCollectionItem, но что то ваша логика от меня ускользает.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.11.2014, 15:33
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace PoisonText
{
    class TsTitleButton : public Sframebar::TsTitleButton
    {
    private:
        AnsiString FSelectIndex;
 
    public:
    __fastcall virtual TsTitleButton(System::Classes::TComponent* AOwner) : 
    Sframebar::TsTitleButton(AOwner){}
        __property AnsiString SelectIndex= { read=FSelectIndex, write=FSelectIndex };
    };
}
#define TsTitleButton PoisonText::TsTitleButton
, теперь просто клади на форму TsTitleButton-ы, и у них будет это доп. свойство...
3
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 15:34  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
TsTitleButton наследуется от System::Classes::TCollectionItem
Это уже были крайние меры, уже перебирал все что можно
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 15:36
И какой смысл от __property SelectIndex? Почему просто не перенести FSelectIndex в public: и убрать первую букву F?

Добавлено через 35 секунд
Цитата Сообщение от Dinkin Посмотреть сообщение
Это уже были крайние меры, уже перебирал все что можно
Далеко же вы ушли от цели.
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 15:41  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
и у них будет это доп. свойство
Все верно оно есть, этого тоже добивался. но вот почему оно не появляться именно тут

C
1
sFrameBar1->Items->Items[sFrameBar1->Items->Count-1]->TitleButton->......// тут должен быть FSelectIndex
Прсто мне необходимо определять это параметр при добавление итемов в писок

Добавлено через 3 минуты
Цитата Сообщение от gumi250 Посмотреть сообщение
И какой смысл от __property SelectIndex? Почему просто не перенести FSelectIndex в public: и убрать первую букву F?
Чет не понял = (
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 15:42
Цитата Сообщение от Dinkin Посмотреть сообщение
почему оно не появляться именно тут
А оно должно появляться? А ты ручками его вбей, скомпили и если будет ошибка, ты ее сюда пиши.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 15:43  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
скомпили и если будет ошибка, ты ее сюда пиши
C
1
2
3
4
5
6
7
TsTitleButton * ts;
ts->SelectIndex="123";
 
 
sFrameBar1->Items->Add();
sFrameBar1->Items->Items[sFrameBar1->Items->Count-1]->TitleButton->Caption="123";
sFrameBar1->Items->Items[sFrameBar1->Items->Count-1]->TitleButton->SelectIndex="123"; // тут ругаеться

[bcc32 Error] Unit3.cpp(35): E2316 'SelectIndex' is not a member of 'TsTitleButton'
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 15:45
Цитата Сообщение от Dinkin Посмотреть сообщение
Чет не понял = (
C++
1
2
3
4
5
6
7
8
9
10
11
namespace PoisonText
{
    class TsTitleButton : public Sframebar::TsTitleButton
    {
    public:
    __fastcall virtual TsTitleButton(System::Classes::TComponent* AOwner) : 
    Sframebar::TsTitleButton(AOwner){};
    AnsiString SelectIndex;
    };
}
#define TsTitleButton PoisonText::TsTitleButton
Добавлено через 1 минуту
Цитата Сообщение от Dinkin Посмотреть сообщение
// тут ругаеться
как ругается? чего пишет?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.11.2014, 15:45
Цитата Сообщение от Dinkin Посмотреть сообщение
тут должен быть FSelectIndex
Не должен быть, перехватчик работает только для данной конкретной формы (ты через него можешь обращаться к свойству SelectIndex созданного на форме компонента), а ты пытаешься обратиться к глубоко запрятанному в недрах Alpha Controls свойству... Там по прежнему всё через Sframebar::TsTitleButton
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
28.11.2014, 15:52  [ТС]
gumi250

Так же и в том же месте
C
1
[bcc32 Error] Unit3.cpp(35): E2316 'SelectIndex' is not a member of 'TsTitleButton'
Добавлено через 4 минуты
Цитата Сообщение от UI Посмотреть сообщение
Там по прежнему всё через Sframebar::TsTitleButton
то есть если что и поможет, то именно правки где то там в недрах?)
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
28.11.2014, 17:04
А что если в самом начале проги сделать #include<sFrameBar.hpp>, затем подмену, а уже потом #include остальных библиотек Alpha Controls.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2014, 17:04
Помогаю со студенческими работами здесь

Присвоение свойства компоненту
есть программа, в ней 4 формы. Есть поток и метод synchronize. Когда в его процедуре пишу это: Form4.lbl1.Caption:='Качоч...

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

Добавить своё свойство к компоненту
Доброй ночи. На основе этого топика https://www.cyberforum.ru/delphi-beginners/thread253046.html понял, как это сделать. А если мне нужно...

Как добавить прозрачность компоненту Panel?
Как к компоненту Panel добавить свойство ПРОЗРАЧНОСЬ?

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru