[DUG] Creating an object at run time.
David O'Brien
Dave at iccs.co.nz
Mon Jul 16 17:45:16 NZST 2012
Thanks, Oh well... I understand, but I don't really know what classes
will be used, guess I'll just have to register everything L. I would
have thought the standard VCL controls would have been sorted though...
From: delphi-bounces at listserver.123.net.nz
[mailto:delphi-bounces at listserver.123.net.nz] On Behalf Of Kyley Harris
Sent: Monday, 16 July 2012 5:35 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Creating an object at run time.
David,
a basic test on a blank form shows that the following code doesn't work
unless registerclass is called first (of course you'd only do this 1
time).
clearly they are not registering these classes by default for streaming.
you will probably find that the Delphi IDE registers them all internally
for DFM creation, but they haven't done it by default for end runtime
code.
begin
RegisterClass(TButton);
with TComponentClass(FindClass('TButton')).Create(self) as tbutton
do
begin
top := 10;
left := 10;
caption := 'hello';
width := 100;
parent := self;
end;
On Mon, Jul 16, 2012 at 12:41 PM, David O'Brien <Dave at iccs.co.nz> wrote:
Very frustrating, I'm getting "Class TButton not Found" with the below
code. Everything in the uses clause is correct: I have a Tbutton on the
form at design time. The form is in a .bpl if that will make a
difference?
// Simplified...
Uses ..., StdCtrls, ...
Var
o: TComponent ;
ot: String ;
begin
ot := 'TButton' ;
o := TComponentClass(FindClass(ot)).Create(nil); <--- Class
TButton Not Found
end ;
-----Original Message-----
From: delphi-bounces at listserver.123.net.nz
[mailto:delphi-bounces at listserver.123.net.nz] On Behalf Of Todd Martin
Sent: Friday, 13 July 2012 4:27 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Creating an object at run time.
b := TComponentClass(FindClass('TButton')).Create(nil);
propinfo := GetPropInfo(b.classinfo,'left'); SetOrdProp(b,propinfo,100);
> I want to create an object at runtime given a string with the object
type. Is this possible or do I need to do a whole pile of if then
else's? There is a limited number of different objects that need to be
created. I then want to access the created objects properties by name
and assign methods.
>
> This is not for oleobjects, but VCL controls.
>
> i.e.
> b := CreateObject('TButton') ;
> b.GetField('left') := 100 ;
> ...
>
> Help on any of these would be appreciated.
>
> Cheers,
> Dave.
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at listserver.123.net.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at listserver.123.net.nz
> with Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi at listserver.123.net.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-request at listserver.123.net.nz with
Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi at listserver.123.net.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-request at listserver.123.net.nz with
Subject: unsubscribe
--
Kyley Harris
Harris Software
+64-21-671-821
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20120716/84d6c2b2/attachment.html
More information about the Delphi
mailing list