Re: [Lazarus] Registering a TFrame to component palette

2021-06-13 Thread Mattias Gaertner via lazarus
On Sun, 13 Jun 2021 21:04:31 +0200 (CEST)
Michael Van Canneyt via lazarus  wrote:

>[...]
> 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);

Lazarus:
FormEditingHook.RegisterDesignerBaseClass

Mattias
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Registering a TFrame to component palette

2021-06-13 Thread Michael Van Canneyt via lazarus



On Sun, 13 Jun 2021, Sven Barth wrote:


Michael Van Canneyt  schrieb am So., 13. Juni 2021,
13:53:




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

TComponentClass

which means "class of TComponent". It is only type information and does

not

carry information about sub-components.
Could somebody please explain how it works in Delphi. Does this really

work

:
  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

through

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

read

it.
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
designer.


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);

Michael.
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Registering a TFrame to component palette

2021-06-13 Thread Sven Barth via lazarus
Michael Van Canneyt  schrieb am So., 13. Juni 2021,
13:53:

>
>
> 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
> TComponentClass
> >> which means "class of TComponent". It is only type information and does
> not
> >> carry information about sub-components.
> >> Could somebody please explain how it works in Delphi. Does this really
> work
> >> :
> >>   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
> through
> > 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
> read
> >> it.
> >> 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
designer.

Or did I miss something here?

Regards,
Sven

>
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Registering a TFrame to component palette

2021-06-13 Thread Michael Van Canneyt via lazarus



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 TComponentClass 
which means "class of TComponent". It is only type information and does not 
carry information about sub-components.
Could somebody please explain how it works in Delphi. Does this really work 
:

  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 through 
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 read 
it.

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.

Michael.-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Registering a TFrame to component palette

2021-06-13 Thread Sven Barth via lazarus

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 
TComponentClass which means "class of TComponent". It is only type 
information and does not carry information about sub-components.
Could somebody please explain how it works in Delphi. Does this really 
work :

  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 
through 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 
read it.

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.


Regards,
Sven
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus