我继承的是TPanel类,我在Imagepanel类中增加了一个ImageFileName字段来接受输入图片的路径。unit Imagepanel;interfaceuses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;type
TImagepanel = class(Tpanel)
private
FImage:TImage;
FFileName:String;
procedure SetPanelImage(Value:String);
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent);
published
property ImageFileName:String Read FFileName Write SetPanelImage;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Custom', [TImagepanel]);
end;{ TImagepanel }constructor TImagepanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImage :=TImage.Create(Self);
FImage.Align := alClient;
end;procedure TImagepanel.SetPanelImage(Value: String);
begin
if Value ='' then Exit;
FFileName := Value;
FImage.Picture.LoadFromFile(Value);
end;end.
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;type
TImagepanel = class(Tpanel)
private
FImage:TImage;
FFileName:String;
procedure SetPanelImage(Value:String);
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent);
published
property ImageFileName:String Read FFileName Write SetPanelImage;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Custom', [TImagepanel]);
end;{ TImagepanel }constructor TImagepanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImage :=TImage.Create(Self);
FImage.Align := alClient;
end;procedure TImagepanel.SetPanelImage(Value: String);
begin
if Value ='' then Exit;
FFileName := Value;
FImage.Picture.LoadFromFile(Value);
end;end.
这个组件可以安装,但是再实际使用的时候,提示TImage类找不到等。
1、声明部分:constructor Create(AOwner: TComponent);override;//注意这里的override
2、
constructor TImagepanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImage :=TImage.Create(Self);
FImage.Parent:=self;////////注意这里,这句很重要,否者是不会显示出image来的
FImage.Align := alClient;
end;另一个问题是,你使用FImage.Picture.LoadFromFile(FFileName);要注意是不能直接载入jpg之类的格式的图片的,只能是bmp之类的位图文件