[Lazarus] help needed making an ide extension

Mattias Gaertner nc-gaertnma at netcologne.de
Wed Aug 12 23:17:28 CEST 2015


On Wed, 12 Aug 2015 21:16:22 +0200
Marc Santhoff <M.Santhoff at web.de> wrote:

>[...]
> 1. Is it correct that to make an extension basically all I have to do is
> write the code that
> - adds a menu entry for starting the code
> - save it as a lazarus package and check "register in ide" (or the
> like ;)
> and that's the basis for doing something useful?

Yes, see for example examples/exploremenu.

 
> 2. When I want the user to select a form for the ide expert to work on,
> a list of available forms is needed. Is iterating over all the projects
> files and getting the form of a file the right way to go?

It depends on what you mean with "available".
For example a project can also access the forms of packages.


> Additionally if yes:
> 
> The code there:
> 
> http://wiki.lazarus.freepascal.org/Extending_the_IDE#Get_unit.2C_designer.2C_form_of_a_file
> 
> looks OK, but doesn't it open all the files of a project?

It opens all forms of the project.


> And does 
> 
> // get form
> aForm:=aDesigner.Form;
> 
> give NIL if the file has no form?

aDesigner will be nil.

 
> 3. How do I create a new component on a form?
> For doing so one would need at least a reference to the active form and
> second a reference to the active component to use as parent.

Adding a component can be complex.
See designer/designer.pp TDesigner.MouseUpOnControl AddComponent.

 
> Afterwards, will the new component created and have owner, parent and
> essential properties set and then added, like I would do in any other
> program creating components in code at runtime or is there another way
> (sth. like "IDEDoCreateComponetntAndAdd(newcomponent.class)")?

Maybe such a function can be added to the IDEIntf.
Can you give some more details what you are trying to achieve?

 
> If there is an example doing all of this stuff, please point me there.
> After browsing some intresting names in lazarus/examples I haven't found
> what's missing.

Mattias




More information about the Lazarus mailing list