控件其实就是一个Panel和两个Image的整合,Image在Panel里面,因为需要同时创建三个控件,故写之,源码如下:
unit IPanel;interfaceuses
Windows, Messages, SysUtils, Classes, Controls, Forms, ExtCtrls;type
TIPanel = class(TPanel)
private
FImg:TImage;
FImgPaste:TImage;
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Img : TImage read FImg write FImg;
property ImgPaste:TImage read FImgPaste write FImgPaste;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Samples', [TIPanel]);
end;constructor TIPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImg:=TImage.Create(AOwner);
FImg.Parent:=Self;
FImg.Name:='Img';////////////************
FImgPaste:=TImage.Create(AOwner);
FImgPaste.Parent:=Self;
FImgPaste.Name:='ImgPaste';/////////////**************
FImg.Top:=0;
FImg.Left:=0;
FImg.Width:=Self.Width-1;
FImg.Height:=Self.Height-1;
FImg.Visible:=False;end;destructor TIPanel.Destroy;
begin
FImg.Free;
FImgPaste.Free;
inherited Destroy;
end;end.以上///////*******处,应用控件时,编译程序,会提示命名重复,若去掉这两句,设计时,控件放置在窗体上,发现两Image控件没有名称,不知怎样访问,其实目的很简单,就是想IPanel.Img这样访问其中一Image控件,请大虾帮忙
unit IPanel;interfaceuses
Windows, Messages, SysUtils, Classes, Controls, Forms, ExtCtrls;type
TIPanel = class(TPanel)
private
FImg:TImage;
FImgPaste:TImage;
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Img : TImage read FImg write FImg;
property ImgPaste:TImage read FImgPaste write FImgPaste;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Samples', [TIPanel]);
end;constructor TIPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImg:=TImage.Create(AOwner);
FImg.Parent:=Self;
FImg.Name:='Img';////////////************
FImgPaste:=TImage.Create(AOwner);
FImgPaste.Parent:=Self;
FImgPaste.Name:='ImgPaste';/////////////**************
FImg.Top:=0;
FImg.Left:=0;
FImg.Width:=Self.Width-1;
FImg.Height:=Self.Height-1;
FImg.Visible:=False;end;destructor TIPanel.Destroy;
begin
FImg.Free;
FImgPaste.Free;
inherited Destroy;
end;end.以上///////*******处,应用控件时,编译程序,会提示命名重复,若去掉这两句,设计时,控件放置在窗体上,发现两Image控件没有名称,不知怎样访问,其实目的很简单,就是想IPanel.Img这样访问其中一Image控件,请大虾帮忙
FImgPaste.Parent:=Self;
去掉FImg.Name:='Img';////////////************
FImgPaste:=TImage.Create(self);