Here the main:
unit unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls,
Employee,
Genericpair;
type
TPairStrInt = specialize TGenericpair<string,integer>;
TPairStrStr = specialize TGenericpair<string,string>;
TPairStrDouble = specialize TGenericpair<string,double>;
TPairStrEmployee = specialize TGenericpair<string,TEmployee>;
type
{ TForm1 }
TForm1 = class(TForm)
ButtonGeneratePairs: TButton;
Memo: TMemo;
procedure ButtonGeneratePairsClick(Sender: TObject);
private
{ private declarations }
PairStrInt : TPairStrInt;
PairStrStr : TPairStrStr;
PairStrDouble : TPairStrDouble;
PairStrEmployee : TPairStrEmployee;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.ButtonGeneratePairsClick(Sender: TObject);
begin
PairStrInt := TPairStrInt.Create('My string',1);
PairStrStr := TPairStrStr.Create('My string one','My string two');
PairStrDouble := TPairStrDouble.Create('My string',1.5);
PairStrEmployee := TPairStrEmployee.Create('A Good employee is ...', TEmployee.Create('Demetrio','Stratos') );
Memo.Clear;
Memo.Lines.Add('First value : ' + PairStrInt.GetFirst + ', Second value : ' + inttostr(PairStrInt.GetSecond));
Memo.Lines.Add('First value : ' + PairStrStr.GetFirst + ', Second value : ' + PairStrStr.GetSecond);
Memo.Lines.Add('First value : ' + PairStrDouble.GetFirst + ', Second value : ' + floattostr(PairStrDouble.GetSecond));
Memo.Lines.Add('First value : ' + PairStrEmployee.GetFirst + ', Second value : ' + TEmployee(PairStrEmployee.GetSecond).PrintMe );
PairStrInt.Destroy;
PairStrStr.Destroy;
PairStrDouble.Destroy;
TEmployee(PairStrEmployee.GetSecond).Destroy;
PairStrEmployee.Destroy;
end;
initialization
{$I unit1.lrs}
end.
Just one main event-driven procedure, on the button's click.