在TCustomControl上初始化子控件的位置

时间:2016-08-26 21:01:26

标签: c++ c++builder vcl c++builder-6

我正在尝试使用Borland C ++ Builder 6创建一个简单的自定义控件。在这种情况下,我正在尝试使用单个TTabSheet创建一个TPageControl。我无法确定初始化这些子控件的正确位置。目前我正在初始化构造函数中的所有内容。一切都编译得很好,但是当我试图将控件放到一个表单上时,Borland IDE给了我一个错误“Control''没有父窗口”或类似的东西。我发现造成这种情况的那一行是TTabSheet的PageControl属性的设置。

我的控制代码如下:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "TestControl.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(TTestControl *)
{
    new TTestControl(NULL);
}
//---------------------------------------------------------------------------
__fastcall TTestControl::TTestControl(TComponent* Owner)
    : TCustomControl(Owner)
{
    pageControl = new TPageControl(this);
    pageControl->Parent = this;

    tabSheet = new TTabSheet(pageControl);
    tabSheet->Parent = pageControl;
    tabSheet->Caption = "Page 1";
    tabSheet->PageControl = pageControl;
}
//---------------------------------------------------------------------------
__fastcall TTestControl::~TTestControl()
{
    pageControl->Free();
}
//---------------------------------------------------------------------------
namespace Testcontrol
{
    void __fastcall PACKAGE Register()
    {
         TComponentClass classes[1] = {__classid(TTestControl)};
         RegisterComponents("Test", classes, 0);
    }
}
//---------------------------------------------------------------------------

任何帮助都会非常感激 - 我发现由于这种特殊技术的年龄,我没有太多运气找到资源。

0 个答案:

没有答案