Horacio Jamilis wrote:
Even if I create a descending class for each TLinkedObjectProperty... I
will not be able to use them...
Could you post the Interface section of your classes and mention what units
they are in. Alternatively look at the tiOPF framework and the source code
examples. The following website mentions how to get the source code.
http://tiopf.sourceforge.net
----------[ tiObject.pas ]---------------------
// you base class of your OPF framework.
TtiObjectList = class(TtiObject)
...
end;
The following is custom classes in your application.
----------[ customer.pas ]---------------
TCustomerList = class(TtiObjectList)
...
end;
-----------[ orders.pas ]--------------
TOrderList = class(TtiObjectList)
...
end;
If you want many-to-many relationships (though you did not mention this in your first posting), then you need to use base classes and to casting. Or pick a "master" class our of the two relationships. The "master" class, lets say TCustomer will contains TOrderList property. But the TOrderList will contain base class and casting. This minimizes casting.
Or use something like the Relationship Manager design pattern. Relationship
Manager can also be found in the tiOPF source code:
https://tiopf.svn.sourceforge.net/svnroot/tiopf/tiOPF2/Trunk/Quarantine/RelationshipManager
As another alternative, you can implement relationships using Interfaces. The
class definition will only mention the Interface name, not the concrete class
type.
I don“t see a solution... except keeping casting :-(
Like I said, if you can post the interfaces definitions of your classes, it
will be easier to see how you use your classes and what solution can be
applied. Remember to also mention which class definitions are in which units.
Regards,
- Graeme -
________________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal