Office中国论坛/Access中国论坛

标题: 如何回车后关闭计算窗口而不是隐藏? [打印本页]

作者: laiguiyou    时间: 2006-7-14 17:34
标题: 如何回车后关闭计算窗口而不是隐藏?
以下是简便计算器模块,是按下回车后把计算的值传递给文本框中,然后隐藏,如何把它改为关闭?

Private Sub 运算_KeyPress(KeyAscii As Integer)
    kk = "运算符"
    Select Case KeyAscii
    Case 8
        kk = "删除"
    Case 13
        kk = "回车"
        运算.SelStart = Len(运算.Text)
        If Len("" & 运算.Text & "") < 1 Then
            If Len("" & d2 & "") < 1 Then
                '返回
                Me.Visible = False
                Form_采购明细表.实际采购量 = d1
            
            Else
                '计一次加0后清d2值
                kk = "计算"
                d2 = ""
                运算 = ""
            End If
        Else
            '计算值
            If Len("" & d2 & "") > 0 Then
                t_value = "0+" & d1 & d2 & 运算.Text
                If IsNull(运算.Text) Or Len(运算.Text) < 1 Then
                    d2 = ""
                    kk = "计算"
                Else
                    d1 = Round(Eval(t_value), 2)
                    d1 = IIf(Mid(d1, 1, 1) = ".", "0" & d1, d1)
                    d2 = ""
                    运算 = ""
                    kk = "计算"
                End If
            Else
                d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
                d2 = ""
                运算 = ""
                kk = "计算"
            End If
        End If
    Case 46, 42, 43, 45, 47
        If 运算.SelStart = Len(运算.Text) Then
            Select Case KeyAscii
            Case 46
                If (InStr(1, 运算.Text, ".", vbTextCompare) > 0) And (Chr(KeyAscii) = ".") Then
                    kk = "非法"
                End If
            Case 42, 43, 45, 47
                If Len("" & d2 & "") > 0 Then
                    t_value = "0+" & d1 & d2 & 运算.Text
                    If IsNull(运算.Text) Or Len(运算.Text) < 1 Then
                        d2 = Chr(KeyAscii)
                        kk = "计算"
                    Else
                        d1 = Round(Eval(t_value), 2)
                        d1 = IIf(Mid(d1, 1, 1) = ".", "0" & d1, d1)
                        d2 = Chr(KeyAscii)
                        kk = "计算"
                    End If
                Else
                    If Len("" & d1 & "") > 0 Then
                        If Len(运算.Text) > 1 Then
                            d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
                        Else
                            d1 = d1
                        End If
                    Else
                        d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
                    End If
                    d2 = Chr(KeyAscii)
                    kk = "计算"
                End If
            End Select
        Else
            运算 = 运算.Text
            运算.SelStart = Len(运算.Text)
            kk = "非法"
        End If
    Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
        kk = "数码"
    Case Else
        kk = "非法"
    End Select

End Sub

Private Sub 运算_KeyUp(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case 37
        kk = "运算符"
        If Len(运算.Text) > 1 Then
            运算 = Mid(运算.Text, 1, Len(运算.Text) - 1)
            运算.SelStart = Len(运算)
        Else
            运算 = ""
        End If
    Case 39
        d1 = ""
        d2 = ""
        kk = ""
        运算 = ""
    Case 38, 40
        运算 = 运算.Text
        运算.SelStart = Len(运算)
    End Select

    If kk = "非法" Then
        kk = "运算符"
        If Len(运算.Text) > 1 Then
            运算 = Mid(运算.Text, 1, Len(运算.Text) - 1)
            运算.SelStart = Len(运算)
        Els
作者: laiguiyou    时间: 2006-7-14 21:09
自已顶


作者: sgrshh29    时间: 2006-7-14 21:28
.................................

If Len("" & 运算.Text & "") < 1 Then
    If Len("" & d2 & "") < 1 Then          '返回
        Form_采购明细表.实际采购量 = d1
        DoCmd.Close acForm, Me.Name
    Else
................................

试试这样行不行.
作者: laiguiyou    时间: 2006-7-14 21:40
可以,谢谢
作者: 顺意    时间: 2006-7-14 23:17
??




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3