Search code examples
.netclasspropertiespublishdelphi-prism

How to write published section of a class with "Property" keyword in Delphi Prism?


I have a derived class with published section. However, the keyword published is not recognized by the compiler and anything below it. I am not sure what I am doing wrong.

Here is the class:

TTrendChart = class(Panel)
private
  fCount:integer;
  fColors:array[0..7] of Color;
  fNames:array[0..7] of string;
  fMinText:string;
  fMaxText:string;
  fShowNames:Boolean;
  fMaxTextWidth:integer;
  data:ArrayList;
  Indexer:integer;
  chartRect:Rectangle;
  fWidth:integer;
  fHeight:integer;
  firstTime:Boolean;
  method  GetColors(Index:integer):Color;
  method  SetColors(Index:integer; const value :Color);
  method  GetNames(Index:integer):string;
  method  SetNames(Index:integer; const value: string);
  method  SetCount(const value : integer);
  method  rShowNames(const value : Boolean);
  method  SetMaxText(const value:string);
  method  SetMinText(const value:string);
  method  RecalcChartRect;
protected
  method  Resize; override;
  method  Paint; override;
public
  constructor (AOwner : TComponent); override;
  //destructor Destroy; override;
  method  PlotPoints(p1,p2,p3,p4,p5,p6,p7,p8:real);
  method  ClearChart;
  method  Print;
  property TrendColors[Index1:integer]: TColor read GetColors write SetColors;
  property TrendNames[index1:integer]: string read GetNames write SetNames;
published
  property TrendCount: Integer read fCount write SetCount default 8;
  property ShowNames: Boolean read fShowNames write rShowNames default true;
  property MaxText:string16 read fMaxText write SetMaxText;
  property MinText:string16 read fMinText write SetMinText;
  property Align;
  property Alignment;
  property BevelInner;
  property BevelOuter;
  property BevelWidth;
  property DragCursor;
  property DragMode;
  property Enabled;
  property Caption;
  property Color;
  property Ctl3D;
  property Font;
  property Locked;
  property ParentColor;
  property ParentCtl3D;
  property ParentFont;
  property ParentShowHint;
  property PopupMenu;
  property ShowHint;
  property TabOrder;
  property TabStop;
  property Visible;

  property Click;
  property DblClick;
  property DragDrop;
  property DragOver;
  property EndDrag;
  property Enter;
  property Exit;
  property MouseDown;
  property MouseUp;
  property MouseMove;
  property Resize;
end;

I can't seem to find answer online regarding this issue. I thought it should have worked as it is written. Compiler keeps saying "Colon ':' expected" for each line with property keyword following the line property MinText:string16 read fMinText write SetMinText;

Any help will be appreciated. Thank you.


Solution

  • There is nothing like 'published' in .NET, so that code make no sense at all. To increase visibility you need to override that element with the new visibility. All details for the visibility options are explained here: http://wiki.oxygenelanguage.com/en/Class_Member_Visibility_Levels