Trevor

I think if you look at the examples you'll see a version using
a pointer to an object, all you do is free it on the nodefree event (IIRC)

Neven MacEwan (B.E. E&E)
Ph. 09 621 001 Mob. 0274 749062



Trevor Jones wrote:

Yeah, that would make sense, but the virtual tree only allocates as much
memory as is required by the GetNodeDatasize method, and that chunk is
inherently a record.  Its a weirdness of the Virtual tree.


----- Original Message ----- From: "Neven MacEwan" <[EMAIL PROTECTED]>
To: "Trevor Jones" <[EMAIL PROTECTED]>; "NZ Borland Developers Group -
Delphi List" <[EMAIL PROTECTED]>
Sent: Monday, June 14, 2004 6:56 PM
Subject: Re: [DUG] Record inheritance





Trevor

Why don't you use a TObject descendant and
point the VirtualTree node at that (rather than a record)

Neven MacEwan (B.E. E&E)
Ph. 09 621 001 Mob. 0274 749062



Trevor Jones wrote:



I think I should be able to do this without asking for help, but


sometimes


the old brain just gets stuck.

I'm using a virtual tree to display and edit some data.

Each node has some data associated with it, and I use a record and a


pointer


to that record to get the data.

If you are used to using Virtual Trees, you will know what I mean.

I've subclassed the form, overridden then GetNodeDataSize method, but


since


the Tree.GetNodeData method always refers to a pointer to a record, I'm a
little bit stumped on how to add some extra fields to that record.

e.g.
TOriginalNodeData = record
  id : integer;
 value : double;
end;
pOriginalNodeData = ^TOriginalNodeData;

Then with my subclass, the node data looks like this:

TNewNodeData = record
  id : integer;
  value : double;
  valueInherited : boolean;
end;

But this means that I have to re-declare all of the old fields in my new
record, and if the original record changes, things are going to go BANG.

I can declare

TNewNodeData = record
  OldStuff : TOriginalNodeData;
  valueInherited : boolean;
end;

and this works, but means I have to dereference OldStuff all of the time.

I'm sure that variant records should allow me to do what I want, but I'm
really stuck on how to declare it.

Any ideas?

Trevor


_______________________________________________ Delphi mailing list [EMAIL PROTECTED] http://ns3.123.co.nz/mailman/listinfo/delphi






_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi






_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi




_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to