Tips and Frequently Asked Questions

 Using a custom TPlannerItem class


For maintaining custom data with each planner item you can assign any TObject descendent class to the PlannerItem's public Object property. However 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:

1. Write your descendent class of TPlannerItem and add the additional properties. Override the assign procedure to copy the extra properties added.

2. 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.

3. 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:
Example:
unit MyPlanner;
interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Planner;
type 
  TMyPlannerItem = class(TPlannerItem) 
  private 
    FMyProperty: string; 
  public 
    procedure Assign(Source: TPersistent); override; 
  published 
    property MyProperty: string read FMyProperty write FMyProperty; 
  end;

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

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

procedure Register;

implementation

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

{ TMyPlannerItems }

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

{ TMyPlanner }

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

{ TMyPlannerItem }

procedure TMyPlannerItem.Assign(Source: TPersistent); 
begin 
  inherited Assign(Source); 
  if Assigned(Source) then
    FMyProperty := TMyPlannerItem(source).MyProperty;
end;
end.
Note: the same method can be used for creating custom TPlannerItem classes with the TDBPlanner. In some events, such a TDBItemSource.OnFieldsToItem or TDBItemSource.OnItemToFields, the extra properties of the custom TPlannerItem class can be accessed by casting the Item parameter to the custom TPlannerItem class.


TMS VCL UI Pack

check_circle
TPlanner
is part of
TMS VCL UI Pack
info
Windows UI Essentials

Pricing

Single Developer License Small Team License Site License
 

TMS VCL UI Pack


€ 375

150 yearly renewal
license for 1 developer


Includes
check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
MOST POPULAR

TMS VCL Subscription


€ 895

450 yearly renewal
license for 1 developer


Includes
check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
check  TMS VCL UI Pack
check  All TMS VCL products
more_horiz  Discover more
BEST VALUE

TMS ALL-ACCESS


€ 1,795

575 yearly renewal
license for 1 developer


Includes
check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
check  TMS VCL UI Pack
check  All TMS VCL products
check  All TMS products
more_horiz  Discover more
All prices excl. VAT. Renewal price is subject to change and only valid up to 30 days after license has expired. After renewal period a discount price is offered to renew the license.

TMS ALL-ACCESS

key
Your unlimited access to all TMS products
local_offer
One money and time saving bundle

Free Trial

Start a free TMS VCL UI Pack evaluation today!
RAD Studio


What our customers say

Thank you Mr. Fierens for your time and assistance. Just want to say your VCL Pack is fabulous.

- Mark Mihevc

Thank you for this superb tool collection!

- Henning Swiboda

Thanks for the effort to create the VCL grid goodies ! These chunks of outcome-oriented teaching-material are very useful. It's unbelievable how powerful the grid is when one knows how to unveil it's countless options...

- Feichtenschlager Thomas

I don''t know how I could have created and managed so many projects without the AdvStringGrid! And although there is already so much functionality in it I''m using my own derived version with automatic column widths, enhanced export to Excel (including text colors, backround colors, comments, merged cells and more), the possibility to fill in static data at design time and more. This often allows me to build a new tool in hours instead of days! Support is also great! Thanks.

- Raß Jacqueline

Keep up the great work...Every new release of TMS Component Pack is like Xmas. Top quality components! :-)

- Aidan Thomson via email

TMS WEB Core

language
Create modern web apps in Delphi & VSC
build_circle
Use Object Pascal code to build JavaScript apps