Can't acces my properties in custom TPlannerItems

Hello:

 i try this code



unit Agenda


interface


uses
   system.Classes,planner;


type
  TMyPlannerItem = class(TPlannerItem)
  private
    Fcodigo_usuario: integer;
    fdosier:integer;
    ftipo:string;
    faviso_cita:string;
    fn_hc_familiar:integer;
    fcita:integer;
    fcodigo_filiacion:integer;


  public
    procedure Assign(Source: TPersistent); override;
  published
    property codigo_usuario: integer read Fcodigo_usuario write Fcodigo_usuario;
    property dosier: integer read Fdosier write Fdosier;
    property tipo: string read Ftipo write Ftipo;
    property aviso_cita: string read faviso_cita write faviso_cita;
    property n_hc_familiar: integer read fn_hc_familiar write fn_hc_familiar;
    property cita: integer read fcita write fcita;
    property codigo_filiacion: integer read fcodigo_filiacion write fcodigo_filiacion;




  end;


  TMyPlannerItems = class(TPlannerItems)
  public
    function GetItemClass: TCollectionItemClass; override;
  end;


  Tagendastoma = class(TPlanner)
  private
    { Private declarations }
  protected
    { Protected declarations }
    function CreateItems: TPlannerItems; override;
  public
    { Public declaratTPlaions }
  published
    { Published declarations }
  end;


procedure Register;


implementation


procedure Register;
begin
  RegisterComponents('TMS', [Tagendastoma]);
end;






function TMyPlannerItems.GetItemClass: TCollectionItemClass;
begin
   Result := TMyPlannerItem;
end;






function Tagendastoma.CreateItems: TPlannerItems;
begin
  Result := TMyPlannerItems.Create(Self);
end;






procedure TMyPlannerItem.Assign(Source: TPersistent);
begin
  inherited Assign(Source);
  if Assigned(Source) then
  begin
     Fcodigo_usuario := TMyPlannerItem(source).codigo_usuario;
     fdosier:= TMyPlannerItem(source).dosier;
     ftipo:= TMyPlannerItem(source).tipo;
     faviso_cita:= TMyPlannerItem(source).aviso_cita;
     fn_hc_familiar:= TMyPlannerItem(source).n_hc_familiar;
     fcita:= TMyPlannerItem(source).cita;
     fcodigo_filiacion:=TMyPlannerItem(source).codigo_filiacion;
  end;
end;


end.


Whith this code, in object inspector can access to my new properties if create a new item, but when i create a new item by code, can't access to new properties.

What's wrong?

Thank's in advance
Alfonso

Please change your code to:


type
  TMyPlannerItem = class(TPlannerItem)
  private
    Fcodigo_usuario: integer;
    fdosier:integer;
    ftipo:string;
    faviso_cita:string;
    fn_hc_familiar:integer;
    fcita:integer;
    fcodigo_filiacion:integer;

  public
    procedure Assign(Source: TPersistent); override;
  published
    property codigo_usuario: integer read Fcodigo_usuario write Fcodigo_usuario;
    property dosier: integer read Fdosier write Fdosier;
    property tipo: string read Ftipo write Ftipo;
    property aviso_cita: string read faviso_cita write faviso_cita;
    property n_hc_familiar: integer read fn_hc_familiar write fn_hc_familiar;
    property cita: integer read fcita write fcita;
    property codigo_filiacion: integer read fcodigo_filiacion write fcodigo_filiacion;


  end;

  TMyPlannerItems = class(TPlannerItems)
  public
    function GetItemClass: TCollectionItemClass; override;
  end;

  Tagendastoma = class(TPlanner)
  private
    function GetMyItems: TMyPlannerItems;
    procedure SetMyItems(const Value: TMyPlannerItems);
    { Private declarations }
  protected
    { Protected declarations }
    function CreateItems: TPlannerItems; override;
  public
    { Public declaratTPlaions }
  published
    { Published declarations }
    property Items: TMyPlannerItems read GetMyItems write SetMyItems;
  end;

procedure Register;

implementation


procedure Register;
begin
  RegisterComponents('TMS', [Tagendastoma]);
end;


function TMyPlannerItems.GetItemClass: TCollectionItemClass;
begin
   Result := TMyPlannerItem;
end;



function Tagendastoma.CreateItems: TPlannerItems;
begin
  Result := TMyPlannerItems.Create(Self);
end;



procedure TMyPlannerItem.Assign(Source: TPersistent);
begin
  inherited Assign(Source);
  if Assigned(Source) then
  begin
     Fcodigo_usuario := TMyPlannerItem(source).codigo_usuario;
     fdosier:= TMyPlannerItem(source).dosier;
     ftipo:= TMyPlannerItem(source).tipo;
     faviso_cita:= TMyPlannerItem(source).aviso_cita;
     fn_hc_familiar:= TMyPlannerItem(source).n_hc_familiar;
     fcita:= TMyPlannerItem(source).cita;
     fcodigo_filiacion:=TMyPlannerItem(source).codigo_filiacion;
  end;
end;


function Tagendastoma.GetMyItems: TMyPlannerItems;
begin
  Result := (inherited Items) as TMyPlannerItems;
end;

procedure Tagendastoma.SetMyItems(const Value: TMyPlannerItems);
begin
  ((Inherited Items) as TMyPlannerItems).Assign(Value);
end;