On Sat, 13 Nov 2004 10:25:35 +0100 (CET) [EMAIL PROTECTED] wrote: > > > On Sat, 13 Nov 2004, Mattias Gaertner wrote: > > > On Fri, 12 Nov 2004 22:32:48 +0100 (CET) > > [EMAIL PROTECTED] wrote: > > > > > > > > > > > On Fri, 12 Nov 2004, Mattias Gaertner wrote: > > > > > > > > > > > I don't know, if this is the right list, but the topic is quite fpc > > > > specific and needs some compiler gurus: > > > > > > > > The Lazarus IDE needs to create new classes at runtime. For example > > > > when loading/creating a descendent of TDataModule named TMyDataModule, > > > > it needs a unique TMyDataModule = class(TDataModule) complete with vmt, > > > > method table (empty), field table (empty), typeinfo > > > > (no properties), and .. ? > > > > At the moment lazarus only supports TDataModule and TForm, so I was > > > > able to just define the two and copy. > > > > But for inheriting I need 'real' custom classes. > > > > > > > > Creating the empty method table, field table and new typeinfo seems to > > > > be easy. But I found some fields, which I don't know: > > > > In objpash.inc there is > > > > const > > > > vmtInstanceSize = 0; > > > > vmtParent = sizeof(ptrint)*2; > > > > > > > > The fields behind vmtParent are easy (at least I think so). But what > > > > about the 8 bytes (i386) behind vmtInstanceSize and in front of > > > > vmtParent? > > > > They seem to be a negative number and a pointer? What are they are good > > > > for? > > > > > > > > And: Is this solution portable or will I get into trouble? > > > > > > What are you trying to do ? > > > > Well, that's a long story ... > > > > > > > As soon as you have the class, you know everything there is to know or > > > that > > > you need to know. You don't need to have more than the TMyClass class > > > pointer. > > > > Wow. That would be great. > > > > > > > In the case of TMyDatamodule, you have the TMyDataModule class pointer, so > > > You can create an instance and 'show' that on screen ? > > > > Where do I get this TMyDataModule class pointer? > > >From the registration routine, of course. You must register it somewhere... > > > I also want TMyDataModule1, TMyOwnDataModule, TAnotherMyDataModule, ... . > > The classname should be different. > > And I want a TMyGrandChildDataModule = class(TAnotherMyDataModule) = > > class(TMyDataModule) = class(TDataModule). > > I only have a TDataModule class pointer. The rest should be created by the > > IDE just from class names. > > But maybe I think too complicated. Fact is, I have class names and I need > > class pointers. > > You must require a class pointer, there is no other way. It is no different > from registering components in the IDE.
A Button1 is always a TButton, but Form1 is TForm1, not just TForm. > > > For forms you must only assume it is a descendant of TCustomForm. > > > > > > The Delphi IDE also can only handle things that descend from TCustomForm > > > and > > > TDatamodule. > > > > That's not sufficient. I want at least TComponent. > > That is not practical, since you cannot 'show' a TComponent on screen ? > TDataModule and TCustomform can be 'shown'. An arbitrary TComponent can only > be shown as an icon on a form or datamodule. If this is your intention, then > you already have it in the IDE. For most parts of the IDE a TDataModule is just a non visual root TComponent. The same way I can/want to show any other custom resource TComponent as well. A resource component is here: The root component of a unit, which class is defined in the source and which is streamed by the IDE to the lrs file. At the moment this can only be a direct TDataModule descendent. But I only need this class creation and it will work for any custom component. > How will you show e.g. TDBManager ? (just picking an arbitrary component I > have at work) It can (eventually) be done the same way as a TDataModule. See above. > > > When registering custom forms or datamodules in the IDE, you > > > need to supply Delphi with the actual class pointer, and then it knows > > > what > > > to do... > > > If you want I can show you code that registers custom forms in the Delphi > > > IDE, I use it myself at work. > > > > Yes, please enlighten me. :) > > I'll send the code to you in private. Thanks. Mattias _______________________________________________ fpc-devel maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-devel
