Здравствуйте, wallaby, Вы писали:
[Skip]
Подводя итог выще сказанному:
#ifndef MyCompH
#define MyCompH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <DesignEditors.hpp>
//---------------------------------------------------------------------------
class PACKAGE TTestProp : public TPersistent
{
public:
TTestProp();
virtual void __fastcall Assign(TPersistent* source);
__published:
AnsiString strA;
AnsiString strB;
};
class PACKAGE TMyComp : public TCustomControl
{
private:
TTestProp *FTestProp;
protected:
void __fastcall setTestProp(TTestProp* p);
public:
__fastcall TMyComp(TComponent* Owner);
__fastcall ~TMyComp();
__published:
__property TTestProp* TestProp = {read = FTestProp, write = setTestProp};
};
//---------------------------------------------------------------------------
#endif
Имплементация:
#include <vcl.h>
#include <DesignIntf.hpp>
#pragma hdrstop
#include "MyComp.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
TTestProp::TTestProp()
: TPersistent()
{
strA = "Строка A";
strB = "Строка B";
}
//---------------------------------------------------------------------------
void TTestProp::Assign(TPersistent* source)
{
// здесь допишите Assign не знаю я как в CBuilder делать is
strA = (TPersistent*)source->strA;
strB = (TPersistent*)source->strB;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TMyComp::TMyComp(TComponent* Owner)
: TCustomControl(Owner)
{
FTestProp = new TTestProp;
}
//---------------------------------------------------------------------------
__fastcall TMyComp::~TMyComp()
{
delete FTestProp;
}
//---------------------------------------------------------------------------
void __fastcall TMyComp::setTestProp(TTestProp* p)
{
if (p)
{
FTestProp->Assign(p);
}
}
//---------------------------------------------------------------------------
P.S.
Все что относится к редактору свойства вырезано, допишете если понадобится.