为什么我的这个由若干个组件组成的复合组件无法注册成功?

来源:互联网  时间:2016/7/16 14:15:01

关于网友提出的“ 为什么我的这个由若干个组件组成的复合组件无法注册成功?”问题疑问,本网通过在网上对“ 为什么我的这个由若干个组件组成的复合组件无法注册成功?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 为什么我的这个由若干个组件组成的复合组件无法注册成功?
描述:

该组件就是由TEdit和TSpeedButton组成的。
其源码如下:
unit ddgButtonEdit2;
interface
 uses
  Windows,messages,SysUtils,Classes,Graphics,Controls,
  StdCtrls,Buttons;
 type           
    TddgButtonEdit2 = Class(TWinControl)
    private
     FSpeedButton:TSpeedButton;
     FEdit:TEdit;
    protected
     procedure WMSize(Var Message:TWMSize); message WM_SIZE;
     procedure SetText(Value:String);
     Function GetText:String;
     Function GetFont:TFont;
     procedure SetFont(Value:TFont);
     Function GetOnButtonClick:TNotifyEvent;
     procedure SetOnButtonClick(Value:TNotifyEvent);
    public
     constructor Create(AOwner:TComponent);override;
     destructor  Destroy;override;
    published
     property Text:String Read GetText Write SetText;
     Property Font:TFont read GetFont write SetFont;
     property OnButtonClick:TNotifyEvent read GetOnButtonClick write SetOnButtonClick;
    end;
implementation
procedure Register;
begin
  RegisterComponents('DDG', [TddgButtonEdit2]);
end;
procedure TddgButtonEdit2.WMSize(Var Message:TWMSize);
begin
  inherited ;
  FEdit.Width :=Message.Width-FSpeedButton.Width;
  FSpeedButton.Left:=FEdit.Width;
end;
constructor TddgButtonEdit2.Create(AOwner:TComponent);
begin
   inherited Create(AOwner);
   FEdit :=TEdit.Create(Self);
   FEdit.Parent:=Self;
   FEdit.Height:=21;
   FSpeedButton :=TSpeedButton.Create(Self);
   FSpeedButton.Left:=FEdit.Width;
   FSpeedButton.Height:=19; //比TEdit的高度小2
   FSpeedButton.Width :=19;
   FSpeedButton.Caption:='...';
   FSpeedButton.Parent :=Self;
   Width :=FEdit.Width+FSpeedButton.Width;
   Height:=FEdit.Height;
end;
destructor TddgButtonEdit2.Destroy;
begin
  FSpeedButton.Free;
  FEdit.Free;
  inherited destroy;
end;
function  TddgButtonEdit2.GetText:String;
begin
  Result:=FEdit.Text;
end;
procedure TddgButtonEdit2.SetText(Value:String);
begin
  FEdit.Text:=Value;
end;
Function  TddgButtonEdit2.GetFont:TFont;
begin
   Result:=FEdit.Font;
end;
procedure TddgButtonEdit2.SetFont(Value:TFont);
begin
  if Assigned(FEdit.font) then
      FEdit.Font.Assign(Value);
end;
Function  TddgButtonEdit2.GetOnButtonClick:TNotifyEvent;
begin
  Result:=FSpeedButton.OnClick;
end;
procedure  TddgButtonEdit2.SetOnButtonClick(Value:TNotifyEvent);
begin
  FSpeedButton.OnClick:=Value;
end;
end.

上一篇为什么我的delphi7里面没有Database Desktop这个数据库桌面程序?
下一篇dbchart显示图形后适用print方法打印时却不能将图形打印出来,为什么?
明星图片
相关文章
《 为什么我的这个由若干个组件组成的复合组件无法注册成功?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)