[Lazarus] Registering a TFrame to component palette
Michael Van Canneyt
michael at freepascal.org
Sun Jun 13 21:04:31 CEST 2021
On Sun, 13 Jun 2021, Sven Barth wrote:
> Michael Van Canneyt <michael at freepascal.org> schrieb am So., 13. Juni 2021,
>> On Sun, 13 Jun 2021, Sven Barth via lazarus wrote:
>>> Am 11.06.2021 um 23:48 schrieb Juha Manninen via lazarus:
>>>> Regarding issue : https://bugs.freepascal.org/view.php?id=28450
>>>> The parameter passed to function RegisterComponents() is
>>>> which means "class of TComponent". It is only type information and does
>>>> carry information about sub-components.
>>>> Could somebody please explain how it works in Delphi. Does this really
>>>> RegisterComponents('Sample', [TMyFrame]);
>>> Yes, it does work this way. I don't know what you mean with "information
>>> about sub-components". The VMT vFieldTable entry contains all published
>>> fields of the class and thus all the sub controls that are visible
>>> the RTTI and thus for the designer. If the IDE does not use that yet,
>> then it
>>> definitly should.
>>>> I added a comment to the report but it is old and the reporter may not
>>>> Maybe there should be a new function RegisterFrame() or similar?
>>> There is no need to add anything, because the necessary information is
>>> already there. It's just that the IDE doesn't use it yet.
>> In Delphi, the above also does not work, you need special handling for
>> frames, just as for forms.
> You think I didn't test it before writing? I created a frame, added it to a
> package, added a Register procedure, installed the package, started a new
> VCL application and added that frame to the form from the component
> palette. I had added a button and a combo box and both were visible in the
I think there was a misunderstanding. You want to place a frame on a
form, just like a component.
I confused this with actually creating custom forms.
I have always used (since D7) a special designer call for this.
With (BorlandIDEServices As IOTAModuleServices) Do
CreateModule(TMKFormWizardModuleCreator.Create(FBaseClass, FClause,FUseInherited) As IOTACreator);
More information about the lazarus