Stocker autre chose qu'un Integer dans le tag d'un composant

Contenu du snippet

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.


Compatibilité : Delphi 5

Disponible dans d'autres langages :

A voir également