Originally Posted by
SamWitse
Ik wil het dus eenvoudig houden, en een lijstje bijhouden met FieldNames en bijhorenden methods die op het juiste moment aan het OnSetTextEvent gekoppeld moeten worden.
...
Maar daarvoor heb ik een lijstje nodig met FieldNames (strings) en Methods.
En liefst zo eenvoudig mogelijk.
Dat is toch exact wat de code die ik gaf deed.
Met fields:
delphi Code:
TMijnForm = class(TForm)
MijnDataSet: TTable;
Geboortejaar: TFloatField;
Postcode: TStringField;
Inkomen: TFloatField;
DataSource1: TDataSource;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FLijst: TDictionary<string, TFieldSetTextEvent>;
procedure SetGeboortejaar(Sender: TField; const Text: String);
procedure SetInkomen(Sender: TField; const Text: String);
procedure SetPostcode(Sender: TField; const Text: String);
procedure Test;
procedure Attach;
public
{ Public declarations }
end;
var
MijnForm: TMijnForm;
implementation
{$R *.dfm}
procedure TMijnForm.SetGeboortejaar(Sender: TField; const Text: String);
begin
Caption := Text
end;
procedure TMijnForm.SetInkomen(Sender: TField; const Text: String);
begin
Caption := Text
end;
procedure TMijnForm.SetPostcode(Sender: TField; const Text: String);
begin
Caption := Text
end;
procedure TMijnForm.Test;
begin
MijnDataSet.Close;
FLijst := TDictionary<string, TFieldSetTextEvent>.Create;
FLijst.Add('Geboortejaar', SetGeboortejaar);
FLijst.Add('Inkomen', SetInkomen);
FLijst.Add('Postcode', SetPostCode);
Attach;
MijnDataSet.Open;
end;
procedure TMijnForm.Attach;
begin
Geboortejaar.OnSetText := FLijst['Geboortejaar'];
Inkomen.OnSetText := FLijst['Inkomen'];
Postcode.OnSetText := FLijst['Postcode'];
end;
procedure TMijnForm.FormCreate(Sender: TObject);
begin
Test;
end;
Als het enigzins kan zou ik de TField.Name property gebruiken (om tikfouten te vermijden) of nog beter: een TDictionary<TField, TFieldSetTextEvent>;
Bookmarks