注册 登录
编程论坛 VB6论坛

求指点:image当变量为真时显示为假时不显示

zh0920 发布于 2016-07-28 22:25, 2173 次点击
Private Sub Form_Load()
    MyTID = 1           ' Reset Transaction ID
    cmdConnect.Value = True
    cmdAddGroup.Value = True
    CheckGroupActive.Value = 1
    cmdAddItem.Value = True
    elec1 = 1
    Call cmdWriteAsync_Click
    Call cmdReadAsync_Click
End Sub

Private Sub txtChangeVal_Change(Index As Integer)
    If elec1 = True Then
        Im1.Visible = True
        Im2.Visible = True
        Im4.Visible = True
        P2.Enabled = True
        P2.Visible = True
    Else
        Im1.Visible = False
        Im2.Visible = False
        Im4.Visible = False
        P2.Visible = False
    End If

End Sub
请教问题:在运行Form_load时elec1为TRUE,Sub txtChangeVal_Change中的IM1 IM2(image)默认不显示,当elec1为TRUE时显示为False时不显示,但这段代码无法实现,请指教下究竟错在哪里?
11 回复
#2
zh09202016-07-29 08:26
没人指点一下吗?
#3
xiangyue05102016-07-29 08:35
elec1 = 1 会触发 Private Sub txtChangeVal_Change(Index As Integer)?
 你这个直接在窗口设计界面下修改visible属性,或者把Im1.Visible = False这些直接放在Form_Load中即可
#4
zh09202016-07-29 11:04
这个elec1在模块里定义的全局变量
#5
zh09202016-07-29 11:14
而且这段代码,放到Load或者Change都不行
#6
xiangyue05102016-07-29 17:09
[b] 在运行Form_load时elec1为TRUE,Sub txtChangeVal_Change中的IM1 IM2(image)默认不显示

都说了你除非在界面设计的时候就把IM1 IM2(image)的visible属性设置为false。  
要不然就是在代码中实现,  
1、直接在Form_load 中加入Im1.Visible = False。
2、在其他函数或者事件中加入,但是前提是Form_load 发生过程中需要触发这个事件或者调用函数。 你也是这么做的,放在txtChangeVal_Change中了,但是没有触发txtChangeVal_Change。所以IM1 IM2应该是显示的。

上面只能解决IM1 IM2(image)默认不显示的问题

,当elec1为TRUE时显示为False时不显示,但这段代码无法实现,请指教下究竟错在哪里?

而IM1 IM2根据elec1变化改变显示状态,这个需要其他的代码实现。需要两个条件: 1. elec1的值发生变化,这个请问你在什么地方?? 2.触发一个事件或者调用一个函数,判断之后修改visible属性。 这个你放在txtChangeVal_Change中了。

要是看不明白我无语了,你也不用再来问了。把VB最基本的东西再好好学习一下,要不再跟你说也白说
#7
zh09202016-07-29 17:14
Private Sub Form_Load()
    MyTID = 1           ' Reset Transaction ID
    cmdConnect.Value = True
    cmdAddGroup.Value = True
    cmdAddItem.Value = True
    CheckGroupActive.Value = 1
    txtChangeVal(11).Text = Format(txtChangeVal(11).Text, "000")
    elec1 = True
    cmdWriteAsync_Click
    If elec1 = True Then Im1.Visible = True
    If Val(txtChangeVal(5).Text) = False Then Im1.Visible = False
    If Val(txtChangeVal(5).Text) = False Then Im2.Visible = False
    If Val(txtChangeVal(5).Text) = False Then Im4.Visible = False
    cmdWriteAsync_Click
End Sub
#8
zh09202016-07-29 17:17
回复 7楼 zh0920
界面设计的时候已经将visible设置成了False,按照你说的,将代码放到了form_load里面,还是一点办法没有
后来又放到Change里面,一样的不显示,唉,看来参这个论坛报的期望值高了,我再想别的办法吧
#9
ZHRXJR2016-07-29 17:45
txtChangeVal 是不是文本框数组控件,那么在 Private Sub txtChangeVal_Change(Index As Integer) 事件中,是那个数组控件发生变化时触发该事件,不可能是所有数组控件变化是均触发该事件吧?
根据你7楼的回复,好像是 txtChangeVal(11) 吧,那么我认为:
程序代码:
Private Sub txtChangeVal_Change(Index As Integer)
    Dim X As Integer
    X = Index
If X = 11 Then   '也可以 If X = 10 Or X = 11 Or X = 12 Or ...... Then
    If elec1 = True Then
        Im1.Visible = True
        Im2.Visible = True
        Im4.Visible = True
        P2.Enabled = True
        P2.Visible = True
    ElseIf elec1 = False Then
        Im1.Visible = False
        Im2.Visible = False
        Im4.Visible = False
        P2.Visible = False
    End If
End If
End Sub

另外 If Val(txtChangeVal(5).Text) = False Then 这个语句是否正确,有待探讨。
 Val(txtChangeVal(5).Text) 是转换为数字类型,数字类型不是逻辑类型(Boolean)变量,不能是 True 或 False
你如果需要判断是不是数字,应该是:  If IsNumeric(txtChangeVal(5).Text) = False Then ,IsNumeric函数是判断一个变量是不是数字的函数。


[此贴子已经被作者于2016-8-4 13:14编辑过]

#10
syx542016-08-02 11:10
Private Sub txtChangeVal_Change(Index As Integer)
这个事件是什么时候触发的?
你在窗体的Load过程里,它会触发吗?
#11
zh09202016-08-04 08:12
回复 9楼 ZHRXJR
那个是文本文件,触发条件是elec1,这个定义了全局变量(boolean),当它为真时,触发image文件或为真或为假。
#12
zh09202016-08-04 08:15
回复 10楼 syx54
触发条件就是elec1为真或者为假。为真时image(也就是im打头的文件)显示,为假时不显示。这个真是很麻烦,Load时就让elec1为真,这个可以实现,后边的image跟着为真或者为假实现不了。
1