Delphi - Property-k legutoljára használt értékének megőrzése

forráskód letöltése
Mellékelt példában egy olyan komponenst készítünk, mely "emlékszik", hogy milyen értéket adtunk legutoljára a property-einek. Így, ha legközelebb használjuk a komponenst és felteszünk belőle egyet egy Form-ra, akkor a property-k automatikusan a legutóbb használt értéket kapják.

Ez a lehetőséget jól kihasználhatjuk olyan esetben, ha a komponenseinknél sok esetben azonos értéket állítunk be. A mellékelt példaprogram megnyitása előtt a SampleComponent.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A megoldás igen egyszerű: amikor változik valamelyik property értéke, akkor eltároljuk azt a Windows regisztrációs adatbázisába, amikor pedig egy új komponenst teszünk a Form-ra, akkor kiolvassuk az eltárolt értékeket és ezt adjuk a property-knek.

Tároláshoz létrehoztuk a SetValues eljárást, míg olvasáshoz a ReadValues-t.

Tároláshoz egyszerűen csak kiírjuk szép sorba az egyes property-ket típusuk szerint.
procedure TSampleComponent.SetValues;
var
  reg: TRegistry;
begin
  if csDesigning in ComponentState then begin
    reg:=TRegistry.Create;
    reg.OpenKey(REGPATH, true);
    reg.WriteString('FA', FA);
    reg.WriteInteger('FB', FB);
    reg.CloseKey;
    reg.Free;
  end;
end;
Amikor új komponenst teszünk a Form-ra, akkor fut le annak konstruktora, így a Create-nél nincs más dolgunk, mint a ReadValues-t meghívni, mely beolvassa a már tárolt értékeket.
procedure TSampleComponent.ReadValues;
var
  reg: TRegistry;
begin
  if csDesigning in ComponentState then begin
    reg:=TRegistry.Create;
    if reg.KeyExists(REGPATH) then begin
      reg.OpenKey(REGPATH, false);
      FA:=reg.ReadString('FA');
      FB:=reg.ReadInteger('FB');
      reg.CloseKey;
    end;
    reg.Free;
  end;
end;