SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1426|回复: 3
打印 上一主题 下一主题

输入框问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2003-10-17 09:56:00 | 只看该作者

输入框问题

我做了一个类,父类是textentry,目的是当获取焦点是,textentry的背景色改变,失去焦点时,背景还原。我覆写了_binit,_tabin,_tabout三个method,增加了一个新的attribute:mycolor;

代码如下,请指正问题所在:
length _method_ $40 mycolor $24;
_method_=_method_;
_self_=_self_;

/* _binit: Initializes an object at design time */
BINIT: PUBLIC method;
    call super(_self_,_method_);
    call send(_self_,'_set_background_color_','background');
endmethod;

/* _tabIn: Invoked when object is made active */
TABIN: PUBLIC method;
    dcl num rc;
    mycolor=_self_._getAttributeValue('mycolor',rc);
    call send(_self_,'_set_background_color_',mycolor);
    _self_._update();
endmethod;

/* _tabOut: Invoked when object is made inactive */
TABOUT: PUBLIC method;
    call send(_self_,'_set_background_color_','background');
    _self_._update();
endmethod;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2003-10-17 22:52:53 | 只看该作者
不用那么复杂,我做了个简单的供你使用。 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
_self_=_self_;

POSTINIT: PUBLIC method;
call super(_self_, '_postInit');
_self_.backgroundColor='Background';
endmethod;

TABIN: PUBLIC method;
_self_.backgroundColor='Red';
endmethod;

TABOUT: PUBLIC method;
_self_.backgroundColor='Background';
endmethod;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2003-10-20 09:22:09 | 只看该作者
谢谢!

我用_self_.getAtrributeValue()和_self_.setAttributeValue()也解决了这个问题,不过你的程序更方便一点。

好像sas8的控件直接采用dot notatioin了,而以前6的控件还是使用call notify,call send。

请教,call super()怎么用?这句call super(_self_, '_postInit')怎么理解。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2003-10-20 10:13:18 | 只看该作者
是啊,所以我一看就知道你是V6的出身的高手,呵呵呵。

语法
CALL SUPER(object-id,method-name&lt;,parameters&gt;);
&lt;return-value=&gt;_SUPER&lt;.method-name&gt;(&lt;parameters&gt;);
call super()是指将原有的方法部分继承,以达到重用的目的。你可以试一下,如果去除这句话程序也能跑,但是log里有error,也就是不能正确实现原有的触发机制。
这是我的个人理解,详情还可参阅help。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-5 18:18 , Processed in 0.176988 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表