| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1449 人关注过本帖
标题:求教TonyDeng :通过方法来调用修改已保护的属性值,不懂。盼等!
取消只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:11 
求教TonyDeng :通过方法来调用修改已保护的属性值,不懂。盼等!
TonyDeng :
预祝国庆愉快!又要来麻烦你了。下面是书上有关<保护及隐藏类成员>的例子,通过方法来调用修改已保护的属性值。窗口标题变化的代码。可以运行。
里面有的代码起什么作用?整个代码的运行机制是什么(运行过程是怎样进行的)?请您指教!(请见标识)
myform1=createobject("myform")
myform1.show
? myform1.getcaption() &&此句是不是调用自定义方法,并在表单中显示有关内容?
m="我的窗口"
myform1.changecaption(m) &&此句是不是自定义方法传递参数M?
?myform1.getcaption() &&此句与上面红的一句(myform1.getcaption())作用是否一样? ,既然有了上面的一句,为什么此处还要这一句?
release myform  &&&此处为何用myform 而不用myform1?

define class myform as form
protected caption
top=40
left=100
caption='被保护的窗口标题'
&&&&&&以下一段代码是如何运行的?
procedure getcaption   
return this.caption      &&返回到何处?
endproc
proc changecaption(c)
this.caption=c         &&此句的作用?
endproc
enddefine
搜索更多相关主题的帖子: 表单 
2011-09-29 09:56
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
谢了,但还是似懂非懂,特别是? myform1.getcaption()与 ? myform1.getcaption() 好象窗口标题的变化与此无关,有无此二个代码窗口标题照样变化,好象与在表单中显示标题有关。我试调了4次。第一次这二 个都没有注销。第二次只注销红的,第三次只注销兰的,第四次全部注销。各次图不同。附上附件。
4次试调.rar (123.39 KB)
2011-09-29 12:32
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
谢谢了,如此热心,又有这样的水平。碰到你真是三幸有运。我主要是代码运行的过程是怎样?要搞清楚其所以然。好比做一件事件第一步做什么,第二步做什么等等各步,各步之间有何联系只有搞清楚这些关系,这样以后自已写代码才能做到有的放矢。
2011-09-29 13:22
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
你的代码提示:
图片附件: 游客没有浏览图片的权限,请 登录注册

多谢了,但还是请你多费心帮我把原来代码运行的机制搞清楚。然后再拜你的大作。否则还是一知半解。ASP也是略懂一些。
2011-09-29 13:42
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
TonyDeng:
改为9.0还不行,后把代码改成你指的行了。
有点难为情了。实才无能,特别对自定义方法及参数传递是一个圪。有2个疑问请教一下。

1).Label1.Caption = myForm1.GetCaption()   &&表示何意?
   .SetCaption("关闭本窗体则前一个窗体的标题将置空")  &&这是什么?是自定义方法吗?如果所有SetCaption(....)改为caption(...)或其它名,为什么会找不到方法或事件?

2)二个过程:对各种参数如何从什么地方传递又从什么地方返回
2011-09-29 16:13
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
多谢了,有点头绪。再仔细拜.SetCaption("。。。")  表示什么?帮助中找不到?是自定的还是系统规定的。如果所有SetCaption(....)改为bcaption(...)或其它名,运行时:为什么会找不到方法或事件?

2011-09-29 17:16
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
myForm2 = CREATEOBJECT("myForm")
WITH myForm2
    .Top = 100
    .Left = 100
    .Label1.Caption = myForm1.GetCaption()
    .SetCaption("关闭本窗体则前一个窗体的标题将置空")
    .Show(1)
ENDWITH
WITH myForm1
    .SetCaption("")
    .Label1.Caption = "标题已置空"
ENDWITH
READ EVENTS
RETURN

DEFINE CLASS myForm AS Form
   
    PROTECTED Caption
    Caption = "被保护的窗口标题"
   
    ADD OBJECT Label1 AS Label WITH Caption = "", Top = 10, Left = 10, AutoSize = .T.
   
    FUNCTION GetCaption() AS Character
        RETURN This.Caption
    ENDFUNC
   
    PROCEDURE SetCaption(tcCaption AS Character)
        This.Caption = tcCaption
    ENDPROC
   
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
这样理介是否正确?红色的 .SetCaption("关闭本窗体则前一个窗体的标题将置空")与 .SetCaption("")是向自定义方法PROCEDURE SetCaption(tcCaption AS Character)传递参数是不是?
我知道属性可以批量设置,.SetCaption("关闭本窗体则前一个窗体的标题将置空")与 .SetCaption("")哪是什么东西?是属性还是??,书中找不到setcaption()

2011-09-29 18:05
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
属性批量设置中一般是固有属性的设置 ,哪道还可以这样设置吗?哪它算属性设置还是方法设置?
2011-09-29 19:15
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
可能我没有讲清楚:
myForm2 = CREATEOBJECT("myForm")
WITH myForm2
    .Top = 100
    .Left = 100
   .setCaption("关闭本窗体则前一个窗体的标题将置空")  **问题1
    .Show(1)             ***问题2
ENDWITH


问题1
WITH myForm2
    .Top = 100     &&固有属性
    .Left = 100    &&同上
   我插一句。照一般常规是 .caption='xxxxxxx'
  现改为如下一句:
.setCaption("关闭本窗体则前一个窗体的标题将置空")
  此句把括号里面的(”关闭本窗体则前一个窗体的标题将置空")红色的内容当作参数传递给下面的过程
PROCEDURE setCaption(tcCaption)      
        This.Caption = tcCaption

变成了This.Caption ="关闭本窗体则前一个窗体的标题将置空",
然后返回到属性批量设置中变成了".caption=“关闭本窗体则前一个窗体的标题将置空"
从这样来看 .setCaption("关闭本窗体则前一个窗体的标题将置空")好象来调用setCaption(tcCaption)过程,不是常规的".caption='xxxxxxx'"。
这样又有不懂的地方了
,我看到一书中”自定义类是放在程序文件中的一组命令,它只是定义类的对象的属性,事件,方法,相当于一个过程。执行该程序文件时,在类定义中的命令是不执行的。所以可执行程序代码必须放在类自定义命令之前。哪么自定义命令外的参数可以传递给自定义内中的自定义方法吗?

问题2
Show(1) &&此句是属性还是方法?属性设置 中可以设置方法?
2011-09-29 20:50
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
这篇文章太有水准了
是否可理介为在类定义中所定义属性,方法,事件如:
[ PROTECTED Caption
    Caption = "被保护的窗口标题"
     
 PROCEDURE setCaption(tcCaption)      
        This.Caption = tcCaption
    ENDPROC
       PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
]都“复制”给相应定义的对象中,如myform1,myform2,它们都具有[.....]的内容。参数传递,调用等都在对象本身内进行。介决了类定义外的参数怎么传到类定义中去的疑问。
这样对问题1,我的理介是不是正确?
myForm2 = CREATEOBJECT("myForm")
WITH myForm2
    .Top = 100
    .Left = 100
   .setCaption("关闭本窗体则前一个窗体的标题将置空") &&继承类定义属性,原来的caption="被保护的窗口标题",后被“setCaption("关闭本窗体则前一个窗体的标题将置空")”传递(  )中参数,通过调用setCaption()方法变成了caption="关闭本窗体则前一个窗体的标题将置空"
    .Show(1)           
ENDWITH
但问题2好象没有理介我的原义。我的意思是在with .....endw是对象设置多个属性的过程,怎么能此中设置方法.show(1)?
WITH myForm2   .

.show(1)
endwi中


[ 本帖最后由 sylknb 于 2011-9-30 10:09 编辑 ]
2011-09-30 09:37
快速回复:求教TonyDeng :通过方法来调用修改已保护的属性值,不懂。盼等!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036281 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved