unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TEdit = class(StdCtrls.TEdit) private fDataTag : pointer; procedure SetDataTag(value : pointer); public destructor Destroy; override; property DataTag : pointer read fDataTag write SetDataTag default nil; end; TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} { TEdit } destructor TEdit.Destroy; begin SetDataTag(Nil); inherited Destroy; end; procedure TEdit.SetDataTag(value: pointer); begin if fDataTag <> Value then begin if fDataTag <> nil then Dispose(fDataTag); fDataTag := Value; end; end; procedure TForm1.FormCreate(Sender: TObject); var ptr : ^Single; begin New(ptr); ptr^ := Pi; Edit1.DataTag := ptr; New(ptr); ptr^ := 180/Pi; Edit2.DataTag := ptr; Edit1.Text := Format('%.4f',[ Single(Edit1.DataTag^) ]); Edit2.Text := Format('%.4f',[ Single(Edit2.DataTag^) ]); end; end.