| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:如何保证动态控件不重复加载?或如何判断控件已经加载?
只看楼主 加入收藏
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
如何保证动态控件不重复加载?或如何判断控件已经加载?
我在编程时,碰到这样的问题,老是跳出控件已加载或控件数组元素不存在的错误提示,不知用什么方式判断动态数组已经加载?用Object.name=""不行,因凡加载过的就有名字,未加载的又显示元素不存在。烦死了,请高手指教。先谢了。

[ 本帖最后由 zhengang1026 于 2013-2-17 10:32 编辑 ]
搜索更多相关主题的帖子: 动态 如何 元素 
2013-02-16 22:37
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
请高手伸出援手,急啊
2013-02-17 12:20
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
查属性index值,存在就加载了,否则可load
2013-02-17 13:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
VB 对 动态控件的 下标,不要求 序列。

那就偷懒吧。你直接继续加载下去就是了。
maxindex =maxindex +1
load   ??(maxindex)
。。。。

如果是控件的 index 绑定了某个数组,那么在数组元素里再保存该控件对应的控件的 index

如果要遍类时,使用
dim a as ??
for each a in ??
debug.pring  a.index
next
来访问该控件的所有的成员。

授人于鱼,不如授人于渔
早已停用QQ了
2013-02-17 16:47
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
以下是引用lowxiong在2013-2-17 13:06:39的发言:

查属性index值,存在就加载了,否则可load
请教如何查Index值?当Image(M)尚未加载时,查Image(M).Index,肯定报错“数组元数不存在”!这同查Image(M).Name是一个道理呀。
2013-02-18 10:40
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
以下是引用风吹过b在2013-2-17 16:47:33的发言:

VB 对 动态控件的 下标,不要求 序列。
 
那就偷懒吧。你直接继续加载下去就是了。
maxindex =maxindex +1
load   ??(maxindex)
。。。。
 
如果是控件的 index 绑定了某个数组,那么在数组元素里再保存该控件对应的控件的 index  
 
如果要遍类时,使用  
dim a as ??
for each a in ??
debug.pring  a.index
next
来访问该控件的所有的成员。
谢谢版主关心。因我是在编一多图片查询程式,图片有两种显示版式(横排或竖排,用两个OPtionButton来区分),当横排完后,我想再看看竖排效果时,就出现Image(M)已加载的错误提示。
2013-02-18 10:48
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:10 
回复 5楼 zhengang1026
比如你有一个image控件数组img1,可以肯定img1(0)是存在的,你想加载img1(5),你不清楚img1(5)是否已经加载,可以设计一个函数检测,根据函数返回值判断这个控件是否加载,可以用两种方法设计这个函数。
'方法一,用错误捕获
function testImgLoadErr(index as integer) as boolean
  on error resume next
  dim a as integer
  testImgLoadErr=true  '默认控件未加载
  err.clear
  a=img1(index).index
  if err.number=0 then  testImgLoadErr=false  '如果不存在错误码,说明该控件已加载,返回值为假
end function

'方法二,遍历已加载控件,比较欲加载的控件系列号是否存在,存在返回假,不存在返回真
function testImgLoadAll(index as integer) as boolean
  dim a as img
  testImgLoadAll=true  '默认控件未加载
  for each a in img1
    if a.index=index then
      testImgLoadAll=false  '如果存在该索引值,说明控件已加载
      exit for
    end if
  next
end function

'调用方法
if testImgLoadAll(5) then load img1(5)  '使用方法二加载控件
if testImgLoadErr(6) then load img1(6)  '使用方法一加载控件

[ 本帖最后由 lowxiong 于 2013-2-18 11:51 编辑 ]
2013-02-18 11:45
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
以下是引用lowxiong在2013-2-18 11:45:12的发言:

比如你有一个image控件数组img1,可以肯定img1(0)是存在的,你想加载img1(5),你不清楚img1(5)是否已经加载,可以设计一个函数检测,根据函数返回值判断这个控件是否加载,可以用两种方法设计这个函数。
'方法一,用错误捕获
function testImgLoadErr(index as integer) as boolean
  on error resume next
  dim a as integer
  testImgLoadErr=true  '默认控件未加载
  err.clear
  a=img1(index).index
  if err.number=0 then  testImgLoadErr=false  '如果不存在错误码,说明该控件已加载,返回值为假
end function

'方法二,遍历已加载控件,比较欲加载的控件系列号是否存在,存在返回假,不存在返回真
function testImgLoadAll(index as integer) as boolean
  dim a as img
  testImgLoadAll=true  '默认控件未加载
  for each a in img1
    if a.index=index then
      testImgLoadAll=false  '如果存在该索引值,说明控件已加载
      exit for
    end if
  next
end function

'调用方法
if testImgLoadAll(5) then load img1(5)  '使用方法二加载控件
if testImgLoadErr(6) then load img1(6)  '使用方法一加载控件
非常感谢您的热必指导!我是VB初学者,正需要您这样的老师热心指教。我还有一个问题请教您,我在创建Image()控件数组时,非得在窗体上先放一个Image(0),然后才能在运行代码中依次加载出Image(1)、Image(2)...我怎样做才能用代码直接创建出全部控件数组,我试过在加载前加上Image().Index=0语句,可是不行,您能教教我吗?
2013-02-18 12:15
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
运行状态下可以动态加载控件,但动态加载控件数组的方法我还没找到,似乎只能在设计阶段加载控件数组。动态加载image的代码如下
dim img1(100) as image,i as integer
for i=0 to 100
  set img1(i)=controls.add("vb.image","img" & trim(str(i))
  img(i).width=600
  img1(i).height=600
next
2013-02-18 13:04
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
以下是引用lowxiong在2013-2-18 13:04:11的发言:

运行状态下可以动态加载控件,但动态加载控件数组的方法我还没找到,似乎只能在设计阶段加载控件数组。动态加载image的代码如下
dim img1(100) as image,i as integer
for i=0 to 100
  set img1(i)=controls.add("vb.image","img" & trim(str(i))
  img(i).width=600
  img1(i).height=600
next
非常感谢!您上面的代码似乎用到了集合概念,我是初学者,再慢慢捉摸。
2013-02-18 13:21
快速回复:如何保证动态控件不重复加载?或如何判断控件已经加载?
数据加载中...
 
   



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

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