Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497051
  • 博文数量: 105
  • 博客积分: 2922
  • 博客等级: 少校
  • 技术积分: 1113
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-02 16:30
文章分类

全部博文(105)

文章存档

2018年(1)

2016年(2)

2015年(3)

2014年(6)

2013年(21)

2012年(10)

2011年(8)

2010年(7)

2009年(31)

2008年(16)

我的朋友

分类:

2008-07-12 16:28:15

分析代码:
string ls_objectname
IF NOT IsValid(inv_NewStyle) or isNull(inv_NewStyle) THEN
 if ai_style= FlatStyle then
   ls_objectname = "n_cst_buttonsrv_NewStyle_flat"
 elseif ai_style= XPStyle then
  ls_objectname = "n_cst_buttonsrv_NewStyle_XP"
 elseif ai_style= GradientStyle then
  ls_objectname = "n_cst_buttonsrv_NewStyle_Gradient"
 end if
 inv_NewStyle = CREATE USING ls_objectname
 inv_NewStyle.of_SetRequestor(THIS)
else
 of_removenewstyle()
 of_setnewstyle(ai_style)
END IF
 
ls_objectname
 是一个字符串用来记录被创建对象的上一级的用户对象名称。
 
n_cst_buttonsrv_NewStyle_flat
n_cst_buttonsrv_NewStyle_XP
n_cst_buttonsrv_NewStyle_Gradient
三个是当前系统中已经存在的用户对象
 
private:
n_cst_buttonsrv_newstyle inv_NewStyle
是一个私有实例变量,注意该私有变量是
n_cst_buttonsrv_NewStyle_flat
n_cst_buttonsrv_NewStyle_XP
n_cst_buttonsrv_NewStyle_Gradient
的祖先类,也就是说这三个用户对象是由,祖先类n_cst_buttonsrv_newstyle派生而来的。
 
inv_NewStyle = CREATE USING ls_objectname
根据ls_objectname创建类的实例。
就是说inv_NewStyle可能是
n_cst_buttonsrv_NewStyle_flat
n_cst_buttonsrv_NewStyle_XP
n_cst_buttonsrv_NewStyle_Gradient
三者之一。
 
 
总结:
动态创建类的实例变量的时候 ,改实例变量必须为 using 后字符串类的祖先类。
 
优点:
没有必要写三次 Create了,和Destroy啦。
阅读(948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~