PB究竟是什么??(新手困惑)

lalakid 2006-03-06 02:21:29
我打开了菜单中的BROWSER,哗啦拉出来一大堆所谓的OBJECT和CONTROL,不显示层次,就剩2个东西了,于是我认为原来PB的对象就这2个,其他的都是派生的,
我不知道对还是不对,但是我发现一个问题,DATAWINDOW CONTRACL的事件ITEMCHANGED有一个参数dwo,
类型是DWOBJECT,我查看DWOBJECT的属性,根本就没有什么NAME,但是我们经常使用DWO.NAME这个属性啊,仔细看帮助文档,说是此时他REFERENCE一个COLUMN OBJECT,于是我糊涂了,希望高手给我讲一讲PB到底是怎么回事吧,谢谢!!!
分数不够,我可以再加,希望从上往下讲,呵呵!
...全文
258 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
msgtogcra 2006-03-07
  • 打赏
  • 举报
回复
首先支持楼主这种有疑必究的精神!说实话,我真没认真想过这个 dwObject 到底是个什么东东!它到底能支持那些属性?为什么能支持这些属性?

我认为这是对数据窗口内嵌的各类对象的再一次封装...一个更抽象的类!如果说有指针的话,也是 dwObject 类型的指针;它们并不直接指向被 dwObject 封装的子类对象!当我们在代码中 dot 出某个属性时,编译器不会检查这个属性是否真的存在!而是等到运行时,由 dwObject 类的实例以这个“属性”为参数去调用一个子类实例的方法,并由子类的实例完成这个操作!所以 dwObject 可以支持的属性一部份取决于被封装的子类有哪些属性,另一部份取决于 dwObject 类本身定义了哪些属性,我只知道一个,就是 selected(获得高亮显示的行,pb 帮助中写的)。所以归根结底,pb 还是面向对象的!

说到 dwo,不能不说到一个很重要的未公开函数,ldwo_obj = dw_1.object.get_attribute("列名", false),这个函数能够通过列名返回该列的 dwObject 类型对象!我也是从 CSDN 的一篇贴子中无意中发现的,呵呵,可遇不可求...
wfliu 2006-03-07
  • 打赏
  • 举报
回复
学习
lalakid 2006-03-07
  • 打赏
  • 举报
回复
谢谢大家的回复
我会努力使用PB的
从你们的回复中我可以看出来自己用的时间太短了
呵呵,
结帖了,祝妇女节快乐!挖哈哈……
msgtogcra 2006-03-07
  • 打赏
  • 举报
回复
正如你所说的,从本质上看,每个对象都只是一个指针,他们指向任何实例都可以!但由于指针和内存的联系过于紧密,不利于对象的封装和抽象,所以在 pb 里,我们可以操纵的,只是对象的“引用”,而不是“指针”。引用和内存就没有什么直接关系了,我们不能对它加加减减,也不能随心所欲地给它一个值。这样做的好处是明显的,象什么可以隐藏类内部的实现机制了,可以随时知道它的有效性了,可以避免内存泄漏了...扯远了:)

回到你的问题上来,其实 sunpulse(波波) 给出的正是 dwObject 所封装的对象的列表,那么这些被封装的对象的属性它肯定都是能用的,只要运行时它指向的那个对象确实有这么个属性就行,而其它对象类型的属性肯定不行;这实际上是一个属性的动态调用,是由编译器直接支持的,而对于 PowerObject 编译器则不允许属性的动态调用,所以 dataobject 必须由 datawindow 类型的变量来使用,其实这也没什么不好,至少可以避免打错字嘛;你说的那种详细的对象类型体系结构图我不知道有没有,不过用的时间长了应该自然会清楚的
lalakid 2006-03-07
  • 打赏
  • 举报
回复
TO:leio((郁闷中...))
谢谢你的回复,你说的话我明白了,我想找这方面的资料,请问那里有呢,谢谢!
买书也行,电子书也行!!
tyllen 2006-03-07
  • 打赏
  • 举报
回复
想问什么呢
leio 2006-03-07
  • 打赏
  • 举报
回复
pb中没有指针。
powerobject可以包容任意一个PB中的对象。
powerobject所包容的对象的属性不可直接访问,要访问它所包容对象的属性,先要将它赋值给相应的对象。

dwobject可以说是powerobject的一个子集。
dwobject可以包容datawindow中的一个对象。

类似的东西还有classdefinition,dragobjec,typedefinition

上述这些对象都有name属性,typeof()函数。

dwobject所能包含的所有对象的各种属性都可直接使用,PB在脚本中不会验证其是否正确,但在运行过程中如果有误会报错。也就是说dwobject可以使用诸如column,DataWindow,text等这些能放到datawindow中的对象的所有属性。

lalakid 2006-03-07
  • 打赏
  • 举报
回复
TO:sunpulse(波波)
首先谢谢你的回复,你写的内容我在帮助文档里看了,的确是这个样子
但是我的疑问不再这里,而是对于DWOBJECT这个系统对象,他为什么能够指向你所说的那些对象,除了这些对象外,还有其他对象他可以指向吗??
是不是PB有这样一个体系结构简图呢,不过我从BROWSER中看层次关系,没有看出来什么结果!
lalakid 2006-03-07
  • 打赏
  • 举报
回复
谢谢回复,继续提问啊:
正如leio((郁闷中...))所言,我下面这样写:
Powerobject lpo_test
lpo_test = create Powerobject
lpo_test.dataobject = ""
系统就会报错powerobject 不具备dataobject 这个属性
这个怎么解释啊,难道我还要把lpo_test 指向一个datastore??
其实就像msgtogcra()所说的那样:它到底能支持那些属性?为什么能支持这些属性?
谢谢,请关注一下吧
我到书店找了,根本就没有这个方面的书,哎
leio 2006-03-06
  • 打赏
  • 举报
回复
dwo是datawindow中各种对象的一个统称。
itemchanged事件,当这个事件触发的时候,对象已经确定,此时dwo已经明确代表了某个对象,就可以使用dwo.name。

就好比楼主的手里面可以放各种东西,当往你的手里放一支笔,那么你的手就有了“书写”这个属性,当往里的手里放一杯水,那么你的手就有了“喝水”这个属性。
lalakid 2006-03-06
  • 打赏
  • 举报
回复
好的,谢谢,看我这个啊
DATAWINDOW CONTCROL的事件ITEMCHANGED有一个参数dwo,
数据类型是DWOBJECT,我在BROSER中查看DWOBJECT的属性,根本就没有什么NAME,但是我们经常使用DWO.NAME这个属性啊,仔细看帮助文档,说是此时他REFERENCE一个COLUMN OBJECT,这是怎么回事啊,谢谢,难道说所有的对象都只是一个指针,他们指向任何实例都可以?
lzheng2001 2006-03-06
  • 打赏
  • 举报
回复
Window,Menu,CommandButton,ListBoxe ...等都可称为对象(object)

powerobject 就是所有对象的统称. 相当于很多其它语言的object



li_d_s 2006-03-06
  • 打赏
  • 举报
回复
那如果你学java,随便定义Object obj都不会错,那是不是也搞不清Object是啥?一样的道理嘛
leio 2006-03-06
  • 打赏
  • 举报
回复
PowerObject是系统对象的一个统称,比如Window,Menu,CommandButton,ListBoxe等等。
你可以把它想象为变量类型中的any
lalakid 2006-03-06
  • 打赏
  • 举报
回复
TO:lzheng2001(1加1)
这样说吧,我在SCRIPT里面写;PowerObject lpo_test
系统肯定不报错,对吧,
那么这个PowerObject 是怎么会事呢
谢谢!
sunpulse 2006-03-06
  • 打赏
  • 举报
回复
这些都是Datawindow object,他们都有各自的属性,具体可以查帮助文件.

Objects

Bitmap
Button
Column
Computed field
DataWindow
Graph
GroupBox
Line
Oval, Rectangle, and RoundRectangle
Report
TableBlob
Text
lzheng2001 2006-03-06
  • 打赏
  • 举报
回复
看了半天,不知道你想问什么!
lalakid 2006-03-06
  • 打赏
  • 举报
回复
自己顶一下先

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧