Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delphi - Where is the IDE picking the list of form names from?

Tags:

ide

delphi

Especially to populate the "inheritable items" and "forms creation" dialogs

I am asking because since a few days, I cannot create inheritable items anymore as there is a space (or a tab?) appended to each form name so I end up with an error message when inheriting like 'basewindow 2 is not a valid identifier' (notice the space between basewindow and 2)

This is very blocking for me as all the forms in the project are inherited from a common ancestor ...

Note: on the newly created froms, there are no space and they work fine. It is a plan d2010 setup, no extra IDE tools or utilities loaded; Note 2: this relates to one project only

Any idea ?

thanks in advance Didier

like image 600
Didiergm Avatar asked Dec 21 '22 22:12

Didiergm


1 Answers

I have done some investigation into this in relation to the question: Register custom form so I can inherit from it from multiple projects, without copying the form to the Object Repository folder. Although it isn't in my answer there, I have since concluded that the IDE will only let you inherit from items explicitely added to the project.

I would therefore say that it picks up those inheritable items from the dpr file. A line like

  UnitOKFrame in 'UnitOKFrame.pas' {OKFrame: TFrame},

would add an OKFrame to the inheritable items list.

So my "guess" is that somehow you have gotten extra spaces between the name of your forms/frames and the colon that separates it from its type. Something like:

  UnitOKFrame in 'UnitOKFrame.pas' {OKFrame : TFrame},

If that is indeed the case, I would file a QC report with Embarcadero. They could bother to make the parsing of the dpr a bit more robust and friendly to us poor programmers :-)...


As Uwe mentioned in the comments, forms are included without a type identifier:

  UnitLogonForm in 'UnitLogonForm.pas' {LogonForm},

in this case you might have extra spaces between the curly braces surrounding the actual name:

  UnitLogonForm in 'UnitLogonForm.pas' {LogonForm },
like image 89
Marjan Venema Avatar answered Jan 04 '23 22:01

Marjan Venema