我在写一个控件,如果把图片加载属性里,老是报内存错误,现象应该是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.
为了简单直观,我写了个加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.
解决方案 »
- 求odac的正式使用版的!!!!
- Service 和 注册表
- 怎样在Delphi7中用ADO方式与Internet网中一个SQL Server服务器连接?
- 怎样用ADOQUERY动态创建一个FOXPRO数据库表? ?
- 紧急在线求助!!!重新安装SQL Server后 程序出现严重问题!!!如果我说得不清楚 请与我QQ联系~~~~~~~ 谢谢!!!
- 如何在QuickRep报表中打印出带有两位小数的数字(即是货币形式的数字).
- 如何获取数据集?
- 大家帮忙!
- 我使用了一个有版权的控件开发软件进行收费,这算不算侵权??
- 问一个很菜的问题,我自定义了一个过程,如何声明他?
- delphi操作ie收藏夹?
- 这个编码怎么解码啊。今天的抽
begin
Paint;//可能有错吧,改成Invalidate
end;
Picture没有错,正常的创建,赋值
constructor Create(AOwner:TComponent); override;吧
主要问题是把空间拖到设计窗体上时,鼠标一点PIC属性就报DESIGNIDE.BPL内存错误。
写的那个控件里貌似试过加上override,然后也不行,就没想到改这里。谢谢
yyfhz
(火山)
结贴了