| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 883 人关注过本帖
标题:奇怪ADD OBJECT与AddObject()效果完全不同
取消只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
 问题点数:0 回复次数:4 
奇怪ADD OBJECT与AddObject()效果完全不同
下面分别用这2种方法,增加一个自定义的类,目的是容器cnt的大小根据label的大小变化,结果 用add object 的可以,但addobject()的没变化
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


of = CREATEOBJECT("form1")
of.Height =600
of.Width = 800
of.show(1)
CLEAR ALL
RETURN

DEFINE CLASS form1 as Form

ADD OBJECT "Cmd1" as commandbutton
Cmd1.top =10
Cmd1.left = 10
PROCEDURE Cmd1.Click
WITH thisform
.AddObject("Cnt2","Cnt")
.Cnt2.top =100
.Cnt2.left= 400
.Cnt2.visible = .t.
.Cnt2.label1.caption = "哈哈哈哈哈哈哈哈"

ENDWITH
ENDPROC

ADD OBJECT "Cnt1" as Cnt
Cnt1.top =100
Cnt1.left= 10
Cnt1.label1.caption = "哈哈哈哈哈哈哈哈"

ENDDEFINE

DEFINE CLASS "Cnt" as Container
  Height = 50
  Width = 100
  ADD OBJECT Label1 as Label WITH BackStyle = 0,AutoSize = .t.,top = 5,left = 5

PROCEDURE Init
 this.Width = this.Label1.Width + 10
ENDPROC
  
ENDDEFINE
搜索更多相关主题的帖子: top left ADD OBJECT 哈哈 
2022-10-03 14:57
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
点Cmd1,生成 Cnt2的效果和直接用 add object的效果完全不同
2022-10-03 15:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
在红字这,改了下,就可以,但会停顿。。。。
of = CREATEOBJECT("form1")

of.Height =600
of.Width = 800
of.show(1)

CLEAR ALL
RETURN


DEFINE CLASS form1 as Form

ADD OBJECT "Cmd1" as commandbutton
Cmd1.top =10
Cmd1.left = 10

PROCEDURE Cmd1.Click

WITH thisform
.AddObject("Cnt2","Cnt")
.Cnt2.top =100
.Cnt2.left= 400
.Cnt2.visible = .t.
.Cnt2.label1.caption = "哈哈哈哈哈哈哈哈"
.Cnt2.Click()

ENDWITH
ENDPROC

ADD OBJECT "Cnt1" as Cnt
Cnt1.top =100
Cnt1.left= 10
Cnt1.label1.caption = "哈哈哈哈哈哈哈哈"

ENDDEFINE

DEFINE CLASS "Cnt" as Container
  Height = 50
  Width = 100
  ADD OBJECT Label1 as Label WITH BackStyle = 0,AutoSize = .t.,top = 5,left = 5

PROCEDURE Init

 this.Width = this.Label1.Width + 10
ENDPROC

  
PROCEDURE Click
*MESSAGEBOX("点了")  && 奇怪的是,这2个地方,随便一个,都可以
WAIT "" TIMEOUT 0.001 && 奇怪的是,这2个地方,随便一个,都可以
   this.Width = this.Label1.Width + 10
ENDPROC


ENDDEFINE
2022-10-03 15:18
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
吹版,知道什么原因吗
2022-10-03 18:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
发现,用 add object 生成的,在 INIT中,就改变了

DEFINE CLASS "Cnt" as Container
  Height = 50
  Width = 100
  ADD OBJECT Label1 as Label WITH BackStyle = 0,AutoSize = .t.,top = 5,left = 5

PROCEDURE Init
 MESSAGEBOX(this.Label1.Width) && 用ADD OBJECT的,就是真是长度了,但 ADDOBJECT()是38,默认长度
 this.Width = this.Label1.Width + 10
ENDPROC
  
ENDDEFINE

2022-10-04 17:38
快速回复:奇怪ADD OBJECT与AddObject()效果完全不同
数据加载中...
 
   



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

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