Написание компонентов и его свойств.
Я К Компоненту TImage прилипил свойства Caption
Все вроде бы нормально компонент компиоируеться.
Устонавливаеться.
Но при вводе текста в Caption не отображаеться.
unit Imagelbl;
interface
uses
SysUtils, Classes, Controls, ExtCtrls,Windows,Graphics;
type
TImagelbl = class(TImage)
private
fimage:TPicture;
fcaption:String;
procedure SetCaption(Value:String);
{ Private declarations }
protected
procedure Paint;override;
{ Protected declarations }
public
constructor Create(owner:TComponent);override;
destructor Destroy;override;
{ Public declarations }
published
property Font;
property Caption:String read fcaption write SetCaption;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TImagelbl]);
end;
procedure TImagelbl.SetCaption;
begin
fcaption:=value;
Paint;
end;
procedure TImagelbl.Paint;
begin
inherited Paint;
if fimage.Graphic<>nil then
begin
Canvas.Font:=font;
if Canvas.TextWidth(fcaption)>width then
width:=Canvas.TextWidth(fcaption)
else
width:=fimage.Width;
height:=fimage.Height+Canvas.TextHeight(fcaption);
//Canvas.FillRect(ClientRect); РАскоментировать, если это требуеть однородный задний фон
Canvas.Draw((width-fimage.Graphic.Width) div 2,0,fimage.Graphic);
Canvas.TextOut((fimage.Graphic.Width-Canvas.TextWidth(fcaption)) div 2,fimage.Graphic.height,fcaption);
end;
end;
constructor TImagelbl.Create;
begin
inherited Create(owner);
width:=100;
height:=100;
fcaption:=Name;
fimage:=TPicture.Create;
end;
destructor TImagelbl.Destroy;
begin
fimage.Destroy;
inherited Destroy;
end;
end.