⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doctorreloadform.frm

📁 内窥镜图案工作站有说明 有文档 有应用程序
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      TabIndex        =   7
      Top             =   840
      Width           =   1200
   End
   Begin VB.Label LabelInLoad 
      AutoSize        =   -1  'True
      BackStyle       =   0  'Transparent
      Caption         =   "用户密码:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   240
      Index           =   1
      Left            =   1320
      TabIndex        =   6
      Top             =   1440
      Width           =   1200
   End
End
Attribute VB_Name = "DoctorReLoadForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'用户登陆界面,具体做法:
'    1. 当窗体打开时,设置滚动文本框1,2的初始位置,然后打开计时器1,使滚动文本框1开始在滚动容器中平滑滚动.在本模块中,用到两
'       个滚动文本框,两个计时器.想法是当第一个文本框移出容器时,第二个开始滚动.在第二个移出容器时,第一个开始滚动.从而达到
'       交替滚动的效果.使得用户产生一条文本连续平滑滚动的错觉.
'    2. 用户名下拉列表对应数据库中的系统用户表的医生姓名字段,为了避免初始化费时,采取折中方案,将该部分转移至下拉列表的下拉
'       事件中.从而减轻软件初始化的负担.为了避免每次点击下拉列表都需要访问数据库,设置布尔型变量DataAccess记录是否访问过.
'    3. 用户登陆部分:在用户输入完成用户名和用户密码之后,点击确定.先判断用户名是否和下拉列表中的数据相符,也就是判断输入的
'       用户名是否和数据库中的数据相符.若用户名不符合,提示重新输入.若相符,再检查密码是否相同.全部相同后登陆成功.
'    4. 登陆成功后将记录医生用户名保存与公共变量,然后显示主界面,卸载登陆界面.点击退出按钮和窗体右上角的关闭按钮时,将卸载
'       登陆界面和主界面.因此,卸载过程分为两种.为此,专门设置变量UnloadType来区别.

Option Explicit

Private UnloadType As Boolean    '布尔型变量,管理退出类型,分为两种.1:完全退出,卸载登陆界面,初始化界面和主界面.2:单纯退出,
                                 '即当输入的用户名和密码正确了,显示主界面,卸载登陆界面和初始化界面.
Private DataAccess As Boolean    '记录是否访问过数据库

Private Sub Form_Load()
   
    UnloadType = False    'False表示第一种退出,True表示第二种退出
    DataAccess = False    '值为True时表示已经访问过,初始时没有访问过数据库,故设置为False
    
    TextInLoad(1).Left = PicBoxInLoad.Width    '滚动文本框1放置于滚动容器PicBoxInLoad的最右端
    TextInLoad(2).Left = PicBoxInLoad.Width    '滚动文本框2放置于滚动容器PicBoxInLoad的最右端
    TimerInLoad1.Enabled = True    '打开计时器1,TimerInLoad1
    
End Sub

Private Sub TimerInLoad1_Timer()    '计时器1打开时,滚动文本框1开始在滚动容器PicBoxInLoad中从右往左移动.计时器每5毫秒运行
                                    '一次,这样使得滚动文本框滚动时流畅,不会出现停顿感.当滚动文本框1移动到容器左边时,滚动
                                    '文本框2开始滚动,从而使用户感觉是一条文本在连续滚动

    If TextInLoad(1).Left > -(TextInLoad(1).Width) Then               '判断滚动文本框1在容器中的位置,如果还没有到容器左边
        If TextInLoad(1).Left = 0 Then TimerInLoad2.Enabled = True    '就让滚动文本框1左移5个单位,到容器左边时,打开计时器
        TextInLoad(1).Left = TextInLoad(1).Left - 5                   '2,当滚动文本框完全移出容器的左边时,关闭计时器1,等待
    Else                                                              '打开指令.同时将滚动文本框移动到容器右边.
        TextInLoad(1).Left = PicBoxInLoad.Width
        TimerInLoad1.Enabled = False
    End If

End Sub

Private Sub TimerInLoad2_Timer()    '方法同计时器1的设置,计时器1与计时器2是相互激活的.

    If TextInLoad(2).Left > -(TextInLoad(2).Width) Then
        If TextInLoad(2).Left = 0 Then TimerInLoad1.Enabled = True
        TextInLoad(2).Left = TextInLoad(2).Left - 5
    Else
        TextInLoad(2).Left = PicBoxInLoad.Width
        TimerInLoad2.Enabled = False
    End If
    
End Sub

Private Sub ComboBoxInLoad_DropDown()    '用户名下拉列表被点击时,当下拉列表出现时发生.通过访问数据库,加载用户名

    If Not DataAccess Then    '若没有访问数据库,则进行访问,否则跳过此部分
    
        Dim RecSystemUser As ADODB.Recordset    '对应数据库中的系统用户表的记录集
        Dim strSQL As String    '存储SQL语句字符串
        Dim DataRecNum As Integer    '存储系统用户表中提取记录的个数
        Dim I As Integer
    
        ComboBoxInLoad.Clear
        Set RecSystemUser = New ADODB.Recordset    '连接系统用户表,提取医生姓名字段
        strSQL = "SELECT 系统用户表.医生姓名 FROM 系统用户表 ORDER BY 医生标识"
        RecSystemUser.CursorLocation = adUseClient
        RecSystemUser.Open strSQL, PACSDataConn, adOpenDynamic, adLockOptimistic, adCmdText

        DataRecNum = RecSystemUser.RecordCount - 1    '记录集的处理,提取医生姓名字段,添加到用户名ComboBox中,从而提供选择
        RecSystemUser.MoveFirst
        For I = 0 To DataRecNum
            ComboBoxInLoad.AddItem (RecSystemUser.Fields(0).Value)
            RecSystemUser.MoveNext
        Next I
        RecSystemUser.Close    '使用完之后关闭数据集
        
        DataAccess = True    '当访问完数据库之后,将此变量设置为True
        
    End If

End Sub

Private Sub ComboBoxInLoad_Click()    '当在用户名下拉列表ComboboxInLoad中选中一个用户名之后,将焦点转移至用户密码输入文本框

    TextInLoad(0).SetFocus

End Sub

Private Sub CmdInLoad_Click(Index As Integer)    '此处为按钮数组,Index=0表示登陆按钮,Index=1表示取消按钮

    If Index = 0 Then    '点击登陆按钮,想法是先判断用户名是否输入,若输入了,就判断输入的用户名是否是正确的,若不正确弹出提
                         '示框,从新输入.然后再判断输入的密码和系统用户表中的是否相同,若不同,弹出提示框.相同就进入主窗体.
        
        Dim ComboNumber As Integer    '存储用户名ComboBox中下拉列表选项的个数
        Dim I As Integer, Flag As Boolean
        Dim RecSystemUser As ADODB.Recordset    '对应数据库中的系统用户表的记录集
        Dim strSQL As String    '存储SQL语句字符串
        
        If ComboBoxInLoad.Text = "" Then
            MsgBox "请先输入用户名!", vbOKOnly, "图文工作站"
            ComboBoxInLoad.SetFocus
        Else
            Flag = False  '判断变量,布尔型,目的:如果值为False,表示输入的用户名与数据库中的不相符
            ComboNumber = ComboBoxInLoad.ListCount - 1
            For I = 0 To ComboNumber    '根据ComboBox中的文本判断输入的用户名是否和系统用户表中的用户名相同,相同就将布尔
                                        '型变量Flag设置为True
                If Trim(ComboBoxInLoad.Text) = Trim(ComboBoxInLoad.List(I)) Then Flag = True
            Next I
            If Not Flag Then    '如果Flag为False,输入的用户名和系统用户表中的不相符,将弹出提示框,用户名输入框ComboBoxInLoad
                                '清空,用户密码输入框TextInLoad(0)清空,并且使之重新获得焦点.
                MsgBox "该用户名不存在,请输入或选择正确的用户名!", vbOKOnly, "图文工作站"
                ComboBoxInLoad.Text = ""
                TextInLoad(0).Text = ""
                ComboBoxInLoad.SetFocus
            Else
                Set RecSystemUser = New ADODB.Recordset    '连接系统用户表,提取和输入用户名相同记录的密码字段
                strSQL = "SELECT 医生口令 FROM 系统用户表 WHERE 医生姓名 = '" & Trim(ComboBoxInLoad.Text) & "' "
                RecSystemUser.CursorLocation = adUseClient
                RecSystemUser.Open strSQL, PACSDataConn, adOpenDynamic, adLockOptimistic, adCmdText
            
                If TextInLoad(0).Text <> RecSystemUser.Fields(0).Value Then    '若密码输入不符,弹出对话框
                    MsgBox "输入密码错误,请重新输入!", vbOKOnly, "图文工作站"
                    TextInLoad(0).Text = ""
                    TextInLoad(0).SetFocus
                Else
                    RegisterDoctor = ComboBoxInLoad.Text    '用户登陆成功,记录下来记录医生的用户名
                    MainForm.Visible = True    '密码正确,显示主界面
                    UnloadType = True    '密码正确,第二种退出
                    Unload Me
                End If
            End If
        End If
    Else
        Unload Me    '第一种退出
    End If

End Sub

Private Sub Form_Unload(Cancel As Integer)    '在退出窗体时,根据UnloadType的值选择性退出

    If (Not UnloadType) And (Not DocReloadAfterIn8) Then    '如果密码不正确或者是没有在MainForm中点击了其它并选中重新登陆的情况
        Unload MainForm
    End If

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -