Jump to content
kyan

Implementing a custom module designer

Recommended Posts

I am trying to implement a custom module designer for a TDataModule descendant with a different user interface than the classic datamodule designer with the grab handles. Reading the extremely limited documentation I came to the conclusion that I had to create a descendant of the class TCustomModule in DesignEditors.pas, have it implement ICustomDesignForm80, implement a form or control that implements the interface IHostForm and have the implementation of ICustomDesignForm80.CreateDesignerForm() create and return an instance of my IHostForm implementation and finally call RegisterCustomModule() on my TDataModule descendant class with the class of my TCustomModule descendant in a Register procedure.

 

When my IHostForm implementation is a TForm descendant it appears as a popup form when I open a module containing my TDataModule descendant pretty much as form designers appeared in older versions of Delphi (e.g. Delphi 7). When it is a TFrame descendant it does not appear at all but I get a message in the module Design page saying "This form or frame is designed in another window. Do you want to use the designer in this window instead?" and a "Move designer" button that does nothing when pressed. By placing debug output calls in all methods of my IHostForm implementing frame I can see that the IDE calls the methods I would expect but it never changes the frame's parent and that's why it never appears.

 

Does anyone know what I need to do to get my IHostForm frame to be parented inside the design page of the editor?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×