标题:奇怪ADD OBJECT与AddObject()效果完全不同
取消只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
 问题点数: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
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
点Cmd1,生成 Cnt2的效果和直接用 add object的效果完全不同
2022-10-03 15:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
吹版,知道什么原因吗
2022-10-03 18:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510188-1-1.html




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

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