首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

有关Parent,该怎么解决

2012-03-03 
有关Parent我想作这样一个控件:在CoolBar上创建一个ToolBar,再在Toolbar上创建N个SpeedButton代码如下:Tcy

有关Parent
我想作这样一个控件:

在CoolBar上创建一个   ToolBar,   再在Toolbar上创建N个   SpeedButton

代码如下:

                TcySpeedButton   =   Class(TSpeedButton)
                Private
                Public
                                Constructor   Create(aOwner:   TComponent);   Override;
                                Destructor   Destroy;   Override;
                end;

                TcyCoolBar   =   Class(TCoolBar)
                Private
                                ToolBar:   TToolBar;
                                SpeedNew:   TcySpeedButton;
                                SpeedSave:   TcySpeedButton;
                                SpeedDel:   TcySpeedButton;
                                SpeedPrint:   TcySpeedButton;
                                SpeedClose:   TcySpeedButton;
                protected
                public
                                constructor   Create(aOwner:   TComponent);   Override;
                                destructor   Destroy;   override;
                published

                end;


constructor   TcyCoolBar.Create(aOwner:   TComponent);
begin
    inherited;
    Self.Height   :=   55;
    ToolBar   :=   TToolBar.Create(Self);
    With   ToolBar   do
    begin
                ToolBar.Height   :=   52;
                Parent   :=   Self;
               
                SpeedNew   :=   TcySpeedButton.Create(nil);
                With       SpeedNew     do
                begin
                            Caption   :=   '新增 ';
                            Glyph.LoadFromFile( 'D:\Work\BMP\5.bmp ');
                            Parent   :=   ToolBar;       //这儿有错!


                end;
    end;
   
end;

destructor   TcyCoolBar.Destroy;
begin
    if   assigned(ToolBar)   then
    FreeAndNil(ToolBar);
    inherited;
end;


{   TcySpeedButton   }

constructor   TcySpeedButton.Create(aOwner:   TComponent);
begin
    inherited;
    Height   :=   50;
    Width   :=   45;
    Layout   :=   blGlyphTop;

end;

destructor   TcySpeedButton.Destroy;
begin

    inherited;
end;

[解决办法]
parent 写 self 指得是他的父类CoolBar所产生的实例,你在这里写的时候类还没有具体实例化,不存在ToolBar这样的实例名称
[解决办法]
SpeedNew := TcySpeedButton.Create(CoolBar);
create的参数是ower,指的就是panrent。还有,动态创建的speedbutton默认是不可见的,还应该把visible设置成true。

热点排行