如何根据一个字符串来从新设置一个对象的执行框架(20分)

  • 主题发起人 主题发起人 TearAngel
  • 开始时间 开始时间
T

TearAngel

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个父类,两个子类
TFather,TChi_1,TChi_2
当我用
var pF:tfather;
pC_1:tchi_1;
pC_2:tchi_2;
创建三个对象,用TFather(pc_1)更改了对象pc_1后,
如何根据pc_1.classname='TChi_1'来做TChi_1(pc_1),
也就是如果TFather有很多子类,你不可能老是在那里用if pc_1.classname='TChi_1' then TChi_1(pc_1)
 
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);

function FindControl(Handle: HWnd): TWinControl;
 
只使用TFather类型的变量作为操作对象的指针。
作为基类TFather应完成所有的接口函数和属性。
子类从父类重载函数,完成不同的功能。
调用一个成员函数或属性,由编译器去决定由哪个类中的方法执行。

如:
tfather = class
procedure foo
override;
end;

TChi_1 = class(tfather)
procedure foo
override;
end;

TChi_2 = class(tfather)
procedure foo
override;
end;

var pf1, pf2:tfather;
pf1 := TChi_1.Create;
pf2 := TChi_2.Create;

pf1.foo
// 完成TChi_1.foo
pf2.foo
// 完成TChi_2.foo
 
to XWHope
我的是一个类,不是control,我不知道该怎么用你讲的方法,可以有更多的提示吗?

==========================================================================
to apw
我想我设计的可能有问题,不过
假设现在有个流程对数据库操作
用户A做一件事情,形成结果Result_A
用户B对Result_A做一些事情,形成Result_B,
.....
我就有一个TFather,两个TChi_1,TChi_2,
如果TChi_1要求两个属性F1、F2,
TChi_2要求有三个属性F1,F2,F3
我现在将F1、F2定义在类TFather中,F3定义在类TChi_2中
结果对于TFather(TChi_2)后必须在还原执行框架才能使用F3
问题就在这里了!
如果你现在有一个对MSSQL操作然后在形成一个本地表
 
后退
顶部