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

小弟我只是想给控件加个图片而已,求帮忙

2012-03-31 
我只是想给控件加个图片而已,求帮忙我在写一个控件,如果把图片加载属性里,老是报内存错误,现象应该是TPICU

我只是想给控件加个图片而已,求帮忙
我在写一个控件,如果把图片加载属性里,老是报内存错误,现象应该是TPICURE没有创建出来,但我在CREATE里面肯定是创建了的
为了简单直观,我写了个加TPICTURE的小例子,依然有这个错误,大家帮忙看下
下面是代码:

unit NumEdit; //单元名称
Interface
uses //该控件需要调用的单元
  SysUtils, Classes, Controls, StdCtrls,ExtCtrls,Graphics,messages;
type
  TNumEdit = class(TImage) //控件类,继承自TEdit
  private //私有成员
  { Private declarations }
  FPic:TPicture;
  procedure setPic(Value: TPicture);

  procedure PicChanged(sender:TObject);
  procedure Paint;override;
  procedure WMSize(var Message: TWMSize); message WM_SIZE;
  protected //保护成员
  { Protected declarations }
  public //公有成员
  { Public declarations }
  constructor Create(AOwner:TComponent);
  published //发布成员
  { Published declarations }
  property Pic:TPicture read FPic write setPic;

  end;
procedure Register; //过程声明
implementation

//下面函数功能是将控件TNumEdit的图标显示在Samples面板上。

procedure Register;
begin
  RegisterComponents('Samples', [TNumEdit]);
end;
{ TNumEdit }

constructor TNumEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FPic:=TPicture.Create;
  Fpic.OnChange:=PicChanged;
end;

procedure TNumEdit.Paint;
begin
  inherited;
end;

procedure TNumEdit.PicChanged(sender: TObject);
begin
  self.Invalidate;
end;

procedure TNumEdit.setPic(Value: TPicture);
begin
  FPic.Assign(Value);
end;

procedure TNumEdit.WMSize(var Message: TWMSize);
begin
  paint;
end;

end.

[解决办法]
constructor Create(AOwner:TComponent); 有问题,应该是
constructor Create(AOwner:TComponent); override;吧

热点排行