Hi,

I am migrating a Delphi system to Lazarus.

Each object of the system is represented in a TFrame.

The declaration of TSystemObject (base object/frame) is:

{$ifdef BASE_SYSTEMOBJECT_ON_OBJECT}
  TSystemObject = class(TObject)
{$else}
  TSystemObject = class(TFrame)
{$endif}
  public
constructor Create(AOwner : {$ifdef BASE_SYSTEMOBJECT_ON_OBJECT}TObject{$else}TComponent{$endif}); {$ifdef BASE_SYSTEMOBJECT_ON_OBJECT}virtual;{$endif} constructor CreateObject(aOwner : {$ifdef BASE_SYSTEMOBJECT_ON_OBJECT}TObject{$else}TComponent{$endif}{; const aSystemData : TSystemData = nil}); virtual;
  end;

The conditional BASE_SYSTEMOBJECT_ON_OBJECT make it act as a frame at design time, and as a TObject at runtime. Then at runtime I create the designed frame by code when required. In Delphi (any version) it works. In Lazarus, I can not see the components at design time (I don't know at runtime because I did not finished the porting and does not compile yet).

I registered it with FormEditingHook.RegisterDesignerBaseClass(TSystemObject); The registration went well! I installed the package ok. The properties of the TSystemObject are on the object inspector as expected.

When I open a unit with a SystemObject created in Delphi, it opens, but the components inside it (in the frame) are not rendered at design time. I can select them with a mouse clic, and the properties of them are ok in the object inspector, but the component is not visible on the form.
Even if I add a TButton, it is not visible.

What could be wrong?

Using .dfm in place of .lfm could be a problem?

Then I changed the base class to TForm (in place of TFrame), and registered it as in the custom form example with RegisterCustomForm(TSystemObject,'SystemObject'); This worked as it appears in the new menu dialog. How to do this with TFrame?

Thank you!

Horacio Jamilis
Buenos Aires, Argentina



--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to