On 18.05.2012 20:38, Zaher Dirkey wrote:
Hi,
I have 2 objects inherited from the base one
T_A = class(TObject);
T_B1 = class(T_A);
T_B2 = class(T_A);
T_B3 = class(T_A);
Now if I want to extend T_B1 it is easy to inherit it to T_C1 = class
(T_B1) and add many functions to it, but.
I want the same extend T_B2 not T_B3,
1 - The first idea is adding this functions to T_A, but it is not my
class to modify it, or it is protected from my modify.
2 - Copy and paste this functions to T_B2, but in that case I need every
time to fix functions in B1 I must do it in B2, that make it so hard,
and not good programming quality.
Is there any new idea to do that, what about Helper, generics, i read
about it i felt it is not fit to my problem (or i am wrong).
Thanks in advance
Helper types might help you here.
E.g.
type
T_AHelper = class helper for T_A
procedure YourNewProc;
end;
procedure T_AHelper.YourNewProc;
begin
...
end;
var
t: T_B1;
begin
t.YourNewProc;
end;
You can access public, published and (strict) protected members using a
class helper.
The helper needs to be in scope ( = it's unit needs to be in the uses)
if you want to use one of it's methods on a instance of T_A (or T_B).
Regards,
Sven
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal