unit user_edit_imp;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Buttons, StdCtrls, RTTICtrls, user_service_intf;

type

  { TfUserEdit }

  TfUserEdit = class(TForm)
    btnOk: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    edtCategory: TTIComboBox;
    edtName: TTIEdit;
    edteMail: TTIEdit;
    edtPreferences: TTIEdit;
  private
    FInfos: TUser;
  public
    constructor Create(AOwner : TComponent);override;
    destructor Destroy();override;
    property Infos : TUser read FInfos;
    function UpdateObject( AUser : TUser ) : Boolean;
  end; 

var
  fUserEdit: TfUserEdit;

implementation

{ TfUserEdit }

constructor TfUserEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FInfos := TUser.Create();
  edtName.Link.TIObject := FInfos;
  edteMail.Link.TIObject := FInfos;
  edtPreferences.Link.TIObject := FInfos;
  edtCategory.Link.TIObject := FInfos;
end;

destructor TfUserEdit.Destroy();
begin
  FreeAndNil(FInfos);
  inherited Destroy();
end;

function TfUserEdit.UpdateObject(AUser: TUser): Boolean;
begin
  Infos.Assign(AUser);
  Result := ( ShowModal() = mrOK );
  if Result then begin
    AUser.Assign(Infos);
  end;
end;

initialization
  {$I user_edit_imp.lrs}

end.