关于Openuserobject和动态创建控件

datura_x 2003-07-23 07:32:45
当编写如下代码:
line ln_1
openuserobject(ln_a,"line",100,100)
ln_a.beginx=100
ln_a.beginy=100
ln_a.endx=1600
ln_a.endy=1600
不能通过编译,
错误提示:Type of actual parameter cannot be ancestor of formal reference parameter type

但当运行如下代码,都能成功,实现动态创建控件:
CommandButton cb_a
StaticText st_a

OpenUserObject(cb_a, "CommandButton", 0, 200)
OpenUserObject(st_a, "statictext", 0, 400)

cb_a.Width = 1000
cb_a.Height = 150
cb_a.Text = "动态创建的按钮!"

st_a.Width = 1000
st_a.Height = 150
st_a.Text = "动态创建的文本!"


想请问,line与cb和st都是控件,为什么line不能用同样的方法动态创建?

如果不用Api和外部函数及控件,还有什么使用PB自身的办法实现动态地在窗口上画直线吗?要求效果是,鼠标取点连线,可控连线速度和线条颜色。我是想通过动态建一条线再控制其属性,但因为遇到上述问题没有实现。

另外,我在创建User Object时,选择Visiual里的Standard,里面竟然找不到line,而cb、st、连TreeView都有,为什么?非常疑惑。
...全文
944 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
datura_x 2003-07-24
  • 打赏
  • 举报
回复
zxtdelphi的办法我也想过,也是认为可行但比较麻烦。
再等!
zxtdelphi 2003-07-24
  • 打赏
  • 举报
回复
就是,斜线怎么办
曾经我用过这个方法:放上去足够用的线段,先隐藏起来,用一个显示一个,麻烦的是要自己控制!!
datura_x 2003-07-24
  • 打赏
  • 举报
回复
那斜线怎么办呢?
紫炎圣骑 2003-07-24
  • 打赏
  • 举报
回复
对,runsoft(清风)说得对

用静态文本框完全可以模拟line的!
linleming 2003-07-24
  • 打赏
  • 举报
回复
同意runsoft(清风) 的做法
runsoft 2003-07-23
  • 打赏
  • 举报
回复

StaticText st_a
OpenUserObject(st_a, "statictext", 0, 400)
st_a.Width = 1000
st_a.Height = 5

可以使用static控件模拟相同的效果呀。
runsoft 2003-07-23
  • 打赏
  • 举报
回复
白兔 说的不错。学习。
datura_x 2003-07-23
  • 打赏
  • 举报
回复
这么说来是不是line就不能用openuserobject()了?那怎么办呢?
klbt 2003-07-23
  • 打赏
  • 举报
回复

pb是面向对象的语言,窗口内所有控件对象均继承自PowerObject\GraphicObject\WindowObject,该类派生出两种子类:DrawObject和DragObject。

DrawObject类是画图对象,是不可拖放的,属于该类控件象有:线段、椭圆、矩形和圆角矩形,一般用于对窗口的美化修饰。

除了这四种控件,其余二十四种控件均属于DrogObject类,是可拖放对象。

所以line和commandbutton等是不一样的。

1,079

社区成员

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

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