Stay in touch

Add your e-mail address here to receive the monthly TMS Software alerts.


TPlanner : Frequently asked questions

Q: When I try to install the package, it asks for Planner.pas

A: Make sure the correct version of PLANNER.DCU is in your library path, that your library path contains the directory where PLANNER.DCU is installed and that no other versions of PLANNER.DCU are in your library path.

Q: How can I scroll programmatically in the planner ?

A: Control scroll with the properties Planner.GridTopRow and Planner.GridLeftCol

Q: How do I get a horizontal planner ?

A: Set Planner.SideBar.Position to spTop

Q: When I run my application I get an error "property does not exist"

A: An older version of PLANNER.DCU might be in your library path.

TPlanner : Tips

For maintaining custom data with each planner item you can assign any TObject descendent class to the PlannerItem's public Object property. Now there is a more convenient way to create a descendent class from TPlanner that has a TPlannerItem with new custom properties which can be used at design time and at run time to hold any additional values with each planner item. The code involved comes down to :

  • Write your descendent class of TPlannerItem and add the additional properties
  • Write your descendent class of the TPlannerItems collection and override the GetItemClass method to instruct the collection to create collection items from your descendent TPlannerItem class.
  • Write your descendent class of TPlanner and override the protected CreateItems method to let the planner use your descendent TPlannerItems collection.
Following code where a new property MyProperty was added to the TPlannerItem, makes this clear :

unit MyPlanner;


  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  TMyPlannerItem = class(TPlannerItem)
    FMyProperty: string;
    property MyProperty: string read FMyProperty write FMyProperty;

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

  TMyPlanner = class(TPlanner)
    { Private declarations }
    { Protected declarations }
    function CreateItems: TPlannerItems; override;
    { Public declarations }
    { Published declarations }

procedure Register;


procedure Register;
  RegisterComponents('TMS', [TMyPlanner]);

{ TMyPlannerItems }

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

{ TMyPlanner }

function TMyPlanner.CreateItems: TPlannerItems;
  Result := TMyPlannerItems.Create(Self);


Copyright © 1995 - 2015 TMS Software v4.0

Being a fan of the Sakura replica watches Wars (Sakura Taisen) franchise, when I pop replica handbags this disc replica louis vuitton into my player, never in my life replica handbags was I so excited (well along with the rolex replica last volume of Princess Nine since louis vuitton replica it came with my order) to see this second OAV series. Can you tell what I think about this show?On chanel replica the first episode on the disc, it's chanel replica basically a story about Maria's past coming back to haunt her. A shady character, by the rolex replica name of Valentinov, comes to Japan looking to exact revenge rolex replica on Maria. He sets up bombs in the Imperial Theatre, which forces Maria breitling replica to come face with the past she wanted to leave behind.