//テキスト右寄せTEdit
type
TREdit =class(TEdit)
protected
procedure CreateParams(var params :TCreateParams); override;
public
constructor CreateEX(Origin :TEdit);
end;
-----------------------------------------------------------------------
constructor TREdit.CreateEX(Origin :TEdit);
var
MS :TMemoryStream;
begin
Create(Origin.Owner);
Self.Parent :=Origin.Parent;
MS :=TMemoryStream.Create;
try
//継承元の情報をメモリストリームに書き込む
MS.WriteComponent(Origin);
//継承元を解放
Origin.Free;
MS.Position :=0;
//継承先コンポに継承元の情報を読み込む
MS.ReadComponent(Self);
finally
MS.Free;
end;
end;
procedure TREdit.CreateParams(var params :TCreateParams);
begin
inherited CreateParams(params);
//ES_RIGHTを加え右寄せにする
params.Style :=params.Style or ES_RIGHT;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//フォーム作成時に入れ替え
Edit1 :=TREdit.CreateEX(Edit1);
end; |