| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5420 人关注过本帖
标题:[求助]VB中Check的具体操作思路[完全解决了,感谢!]
只看楼主 加入收藏
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
结帖率:100%
收藏
 问题点数:0 回复次数:8 
[求助]VB中Check的具体操作思路[完全解决了,感谢!]
我的意思思路就是,如有label1,label2,label3,label4,分别为4个数值,如label1=50,label2=60,label3=70,label4=80,label5=100
(下面简称为L50,L60,L70,L80,L100),然后分别有3个Check控制,如Check1, 2, 3, 我想要的思路就是,如Check1为True时,L50,L60
L70,L80的数值为0或"",如Check2为True,L50和L60的数值为0或"",如Check3为True时,L80和L100的数值为0或"".总的意思就是

如Check3已经为True,那么L80和L100的数值为0或"",接着再激活Chec2为True,,L50和L60的数值也为0或""了,最后再激活Check1为True
剩下的在Check1的控制内的数值也为0或""(如L50,L60,L70,L80)为0或"".但是如果我把其中的一个Check改变为False时,Label里会
恢复没有被影响到的数值,如前面的例子,我所有数值已经为0或"",但我又把Check1改变为False,那么只返回L70。

就像一个过滤器一样,一步步过滤,当Check为真是过滤掉数据,Check为假是,返回其数据,但不返回其他Check控件中包含过滤的数据。我试过用IF....tehn..endif语句,但只能一步步过滤,返回的时候它又会全部返回。真不知如何解决。请高手帮忙!

不知道有没有说清楚,希望各位高手帮忙指教!感激,谢谢!

[此贴子已经被作者于2007-6-2 18:45:13编辑过]

搜索更多相关主题的帖子: Check 思路 True 数值 
2007-06-02 15:39
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 

'在窗体上添加一组Label控件,名为L1,Index从0到5(共六个),一组CheckBox控件,名为Check1,Index从0到2(共三个)
Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
L1(I).Caption = IIf(Check1(Index).Value, vbNullString, J) '如果要显示0的话就把加蓝部分换成0
L1(I + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
L1(I).Caption = 50 + I * 10
Next
End Sub

[此贴子已经被作者于2007-6-2 16:13:42编辑过]


VB QQ群:47715789
2007-06-02 15:59
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
谢谢2楼朋友的关注与解答,细心研究下,楼上朋友的思路。谢谢!希望能解决问题!
2007-06-02 16:07
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用Joforn在2007-6-2 15:59:11的发言:

'在窗体上添加一组Label控件,名为L1,Index从0到5(共六个),一组CheckBox控件,名为Check1,Index从0到2(共三个)
Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
L1(I).Caption = IIf(Check1(Index).Value, vbNullString, J) '如果要显示0的话就把加蓝部分换成0
L1(I + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
L1(I).Caption = 50 + I * 10
Next
End Sub


你的思路我试验过了可行,就是我想要的意思,谢谢你啊。

请问2楼朋友,vbNullString属于一个什么意思的参数,是空白的文字符串的意思吗??因为初了解VB,所以可能理解能力不够强,谢谢。

[此贴子已经被作者于2007-6-2 16:23:53编辑过]

2007-06-02 16:22
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
vbNullString就是空字符串,比""还更少占内存。

VB QQ群:47715789
2007-06-02 16:28
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用Joforn在2007-6-2 16:28:36的发言:
vbNullString就是空字符串,比""还更少占内存。

OK,谢谢楼上版主,您的热心帮助会使论坛更加兴旺的!充心感谢!

2007-06-02 16:32
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 

不好意思啊,研究一下,楼上的代码发现有个问题啊不太懂

Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
Label1(Index).Caption = IIf(Check1(Index).Value, vbNullString, J)
Label1(Index + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
Label1(Indxe).Caption = 50 + I * 10
Next
End Sub

就是,如果按照楼上的代码去做的话,不能做到交叉过滤数据,我总的意思是Label里的值是不变的,
而楼上的思路好像是有有改变的。第四个Label没有发生作用,而其他的又改变了他的值,请问是什么回事啊???

[此贴子已经被作者于2007-6-2 17:00:19编辑过]

2007-06-02 16:57
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 

Option Explicit

Private Sub Check1_Click(Index As Integer)
L1(0).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 50)
L1(1).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 60)
L1(2).Caption = (1 - Check1(0).Value) * 70
L1(3).Caption = IIf(Check1(0).Value Or Check1(2).Value, 0, 80)
L1(4).Caption = (1 - Check1(2).Value) * 100
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 3
L1(I).Caption = 50 + I * 10
Next
L1(I).Caption = 100
End Sub


VB QQ群:47715789
2007-06-02 17:58
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用Joforn在2007-6-2 17:58:13的发言:

Option Explicit

Private Sub Check1_Click(Index As Integer)
L1(0).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 50)
L1(1).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 60)
L1(2).Caption = (1 - Check1(0).Value) * 70
L1(3).Caption = IIf(Check1(0).Value Or Check1(2).Value, 0, 80)
L1(4).Caption = (1 - Check1(2).Value) * 100
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 3
L1(I).Caption = 50 + I * 10
Next
L1(I).Caption = 100
End Sub

谢谢楼上斑竹,现在用完全是没问题了。谢谢啊~又学到东西了!

2007-06-02 18:43
快速回复:[求助]VB中Check的具体操作思路[完全解决了,感谢!]
数据加载中...
 
   



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

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