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

📄 frmmain.frm

📁 网吧的所有经营活动都能操作(包括时间管理、客户机管理、食品出售等)
💻 FRM
📖 第 1 页 / 共 5 页
字号:
Select Case Data1.Recordset.Fields("状态").Value
  Case "Y"
   st = 3
  Case "N"
   st = 2
  Case "P"
   st = 4
  Case "S"
   st = 5
End Select
ListView1.ListItems.Add i, , Data1.Recordset.Fields("名称").Value, st, st
FlashListView (i)
Data1.Recordset.MoveNext
Next i
Form_Resize

ListView1_ItemClick ListView1.SelectedItem
Combo1.Text = Combo1.List(0)
Winsock2.Listen

End Sub

Private Sub Form_Resize()
'改变窗体大小
On Error Resume Next
ListView1.Width = Me.Width - 120
ListView1.Height = Me.Height - Toolbar1.Height - StatusBar1.Height - 800


End Sub

Private Sub Form_Unload(Cancel As Integer)
If MsgBox("如果当前还有机器正在记时,将无法正确提示时间!" + vbCrLf + "真的要退出吗?", vbQuestion + vbYesNo + vbDefaultButton2, "确实要退出吗?") = vbNo Then
 Cancel = True
End If

End Sub






Private Sub ListView1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
ListView1_DblClick
End If
End Sub

Private Sub ListView1_DblClick()
'MsgBox ListView1.SelectedItem.Index
'xx = Screen.TwipsPerPixelX
'yy = Screen.TwipsPerPixelY
Beep
Select Case Data1.Recordset.Fields("状态")
Case "Y", "P"
'TabStrip1.Tabs(2).Selected = True
 cdJF3_Click
Case "N", "S"
'TabStrip1.Tabs(1).Selected = True
cdJF1_Click
End Select

'Image2.Visible = True
'Form_Resize
End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
On Error Resume Next
StatusBar1.Panels(1).Text = ListView1.ToolTipText
SelectComputer = Item.Index

With Data1.Recordset

.MoveFirst
'MsgBox Item.Index
.Move Item.Index - 1
 SelectJSJ

End With
ListView1.SetFocus

End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    If cdJF1.Enabled = True Then
    PopupMenu cdJF, , , , cdJF1
    Else
    PopupMenu cdJF, , , , cdJF3
    End If
  End If
End Sub



Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'移动鼠标
'ListView1.HitTest(x, y).Text
On Error Resume Next
Select Case ListView1.HitTest(X, Y).Icon
Case 3
 tt = "正在记费中"
Case 2
 tt = "已经关机"
Case 5
 tt = "正在待机中"
End Select

ListView1.ToolTipText = ListView1.HitTest(X, Y).Text & "状态:" & tt
If Err <> 0 Then ListView1.ToolTipText = ""
'StatusBar1.Panels(1).Text = ListView1.ToolTipText
End Sub


Private Sub Timer1_Timer()
StatusBar1.Panels(3).Text = Format(Now, "yyyy年mm月dd日hh:nn:ss  ") & GetWeek(Date)
End Sub

Public Sub Timer2_Timer()
'每分钟刷新一次
On Error Resume Next
'a = CountJF
'ListView1_ItemClick ListView1.SelectedItem
With Data1.Recordset
Y = 0
n = 0
s = 0
p = 0
aa = .AbsolutePosition
.MoveFirst
For i = 1 To .RecordCount
FlashListView i

Select Case .Fields("状态")
Case "Y"
 st = 3
 Y = Y + 1
 If .Fields("到点时间") < Now Then
 For j = 0 To Winsock1.Count - 1
 ' MsgBox Winsock1(j).RemoteHostIP
 If Winsock1(j).RemoteHostIP = .Fields("IP") Then
   Winsock1(j).SendData "_comm" + Chr(0) + "stop" + Chr(0) + "OK$"
   ' "_comm" + Chr(0) + "stop"
   DoEvents
   Winsock1(j).SendData "_msgb" + Chr(0) + "你所定的时间已经到了,请到吧台去结帐!" + Chr(0) + "OK$"
   DoEvents
   Exit For
 End If
 Next j
 
  If SupperMsgbox(.Fields("名称") & " 时间到了,是否要结帐?" & vbCrLf & _
            "先择[确定]进入结帐界面,否则继续记费!", vbOKCancel) = vbOK Then
   ListView1.ListItems(i).Selected = True
   ListView1_ItemClick ListView1.ListItems(i)
   TabStrip1.Tabs(2).Selected = True
  Else
   .Edit
    .Fields("到点时间") = Null
   .Update
     For j = 0 To Winsock1.Count - 1
        If Winsock1(j).RemoteHostIP = .Fields("IP") Then
        Winsock1(j).SendData "_comm" + Chr(0) + "start" + Chr(0) + "OK$"
        DoEvents
       Exit For
     End If
     Next j
   Timer2_Timer
  End If
 End If
Case "N"
 n = n + 1
 st = 2
Case "S"
 st = 5
 s = s + 1
 findIt = False
 For j = 0 To Winsock1.Count - 1
  If Winsock1(j).RemoteHostIP = .Fields("IP") And .Fields("IP") <> "" Then
   .Edit
   .Fields("状态") = "S"
   .Update
   findIt = True
  End If
 Next j
 If findIt = False Then
    .Edit
   .Fields("状态") = "N"
   .Update
   st = 2
 End If
Case "P"
 p = p + 1
 st = 4
End Select
ListView1.ListItems(i).SmallIcon = st
ListView1.ListItems(i).Icon = st
.MoveNext
Next i

StatusBar1.Panels(2).Text = Y & "台记费中 " & p & "台暂停中"
.MoveFirst
.Move aa
End With
End Sub





Private Sub txtSJName_Change()
On Error Resume Next
 comSjZhengJi.Text = ""
 txtZhengJian.Text = ""
      With Data9.Recordset
For i = 0 To txtSJName.ListCount - 1
    If txtSJName.Text = txtSJName.List(i) Then
    .MoveFirst
    .Move txtSJName.ItemData(i)
    comSjZhengJi.Text = .Fields("证件")
    txtZhengJian.Text = .Fields("证件号码")
    End If
Next i

End With
End Sub



Private Sub Winsock1_Close(Index As Integer)
'计算机关机
On Error Resume Next
With Data1.Recordset
     aa = .AbsolutePosition
     .MoveFirst
     For i = 1 To .RecordCount
        If .Fields("IP") = IndexSock(Index).Ip Then
            If .Fields("状态") = "S" Then
              .Edit
               .Fields("状态") = "N"
              .Update
              ListView1.ListItems(i).Icon = 2
              ListView1.ListItems(i).SmallIcon = 2
            End If
        End If
        .MoveNext
     Next i
     .MoveFirst
     .Move aa
     Timer2_Timer
End With
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'当接到信息时
 Dim strData As String
     Dim comm As String
      Dim findIt As Boolean
 Dim ThisStr() As String, cc As Long
 On Error Resume Next
 Winsock1(Index).GetData strData, vbString
 Select Case Left(strData, 5)
  Case "_talk"
     XianShiTalk strData, Index
  Case "_comm"
    comm = ""
    cc = 0
    For i = 1 To Len(strData)
     a$ = Mid(strData, i, 1)
     If a$ = Chr(0) Then
     cc = cc + 1
     Else
     If cc = 1 Then comm = comm + a$
     End If
    Next i
    Select Case comm
    Case "start"
    If frmScreen.Visible = True Then
     Winsock1(Index).SendData "_msgb" + Chr(0) + "主机已被锁定,请稍后再试!" + Chr(0) + "OK$"
     DoEvents
     Exit Sub
    End If
    Unload frmScreen
      With Data1.Recordset
      aa = .AbsolutePosition
      .MoveFirst
      For i = 1 To .RecordCount
      If .Fields("IP") = Winsock1(Index).RemoteHostIP Then
        pd = vbNo
        pd = SupperMsgbox(.Fields("名称") & "要求开机,是否同意?", vbYesNo)
         If pd = vbYes Then
             txtSJName = ""
             txtZhengJian = ""
            comSjZhengJi.Text = ""
            Winsock1(Index).SendData "_comm" + Chr(0) + "start" + Chr(0) + "OK$"
            DoEvents
            .Edit
            .Fields("状态").Value = "Y"
            .Fields("开始时间").Value = Now
            .Fields("客户姓名") = txtSJName
            .Fields("客户证件") = comSjZhengJi
            .Fields("证件号码") = txtZhengJian
            .Fields("上机方式") = "N"
            .Update
            Timer2_Timer
          End If
            Exit Sub
      End If
      .MoveNext
      Next i
      .MoveFirst
      .Move aa
      End With
    End Select
  Case "_good" '商品
   
    If frmScreen.Visible = True Then
     Winsock1(Index).SendData "_msgb" + Chr(0) + "主机已被锁定,请稍后再试!" + Chr(0) + "OK$"
     DoEvents
     Exit Sub
    End If
    Unload frmScreen
    cc = 0
           ReDim Preserve ThisStr(cc) As String
    For i = 1 To Len(strData)
        ab$ = Mid(strData, i, 1)
        If ab$ = Chr(0) Then
            cc = cc + 1
            ReDim Preserve ThisStr(cc) As String
        Else
            ThisStr(cc) = ThisStr(cc) + ab$
        End If
     Next i
     sps = ""
     'MsgBox thisStr(1)
      For i = 1 To cc Step 3
       sps = sps + ThisStr(i + 1) + Space(50 - LenB(StrConv(ThisStr(i + 1), vbFromUnicode))) & "数量:" & ThisStr(i + 2) & vbCrLf
      Next i
      With Data1.Recordset
      aa = .AbsolutePosition
      .MoveFirst

      For i = 1 To .RecordCount
         If .Fields("IP") = Winsock1(Index).RemoteHostIP Then
               If SupperMsgbox(.Fields("名称") & "要求选择下列商品,是否同意?" + vbCrLf + sps, vbYesNo, "有人要商品", 90) = vbYes Then
                Winsock1(Index).SendData "_msgb" + Chr(0) + "请您稍候,马上把你要的商品送到!" + Chr(0) + "OK$"
                For j = 1 To cc Step 3
                     Data3.Recordset.MoveFirst
                     For k = 1 To Data3.Recordset.RecordCount
                     If ThisStr(j) = Data3.Recordset.Fields("商品编号") Then
                      Data3.Recordset.Edit
                      Data3.Recordset.Fields("库存数量") = Data3.Recordset.Fields("库存数量") - Val(ThisStr(j + 2))
                      Data3.Recordset.Update
                      Exit For
                     End If
                      Data3.Recordset.MoveNext
                    Next k
                     Data2.Recordset.MoveFirst
                    For k = 1 To Data2.Recordset.RecordCount
                    
                        If Data2.Recordset.Fields("商品编号") = ThisStr(j) And Data2.Recordset.Fields("机号") = .Fields("机号") Then
                             findIt = True
                              Exit For
                         End If
                     Data2.Recordset.MoveNext
                    Next k
                    If findIt = True Then
                        Data2.Recordset.Edit
                    Else
                        Data2.Recordset.AddNew
                    End If
                    Data2.Recordset.Fields("机号") = .Fields("机号")
                    Data2.Recordset.Fields("商品编号") = ThisStr(j)
                    Data2.Recordset.Fields("数量") = Data2.Recordset.Fields("数量") + Val(ThisStr(j + 2))
                    Data2.Recordset.Fields("时间") = Now
                    Data2.Recordset.Update

                Next j
                DoEvents
               End If
               Exit Sub
         End If
         .MoveNext
      Next i
      Timer2_Timer
      .MoveFirst
      .Move aa
      End With
  Case "_gets" '获取
       ReDim ThisStr(4) As String
    cc = 0
    For i = 1 To Len(strData)
        a$ = Mid(strData, i, 1)
        If a$ = Chr(0) Then
            cc = cc + 1
        Else
            ThisStr(cc) = ThisStr(cc) + a$
        End If
     Next i
    Select Case ThisStr(1)
    Case "good"
        With Data3.Recordset
            .MoveFirst
            strData = "_gets" + Chr(0) + "good" + Chr(0)
            For i = 1 To .RecordCount
                strData = strData + .Fields("商品编号") + Chr(0) + .Fields("商品名称") + Chr(0) + CStr(.Fields("零售价格")) + Chr(0)
                .MoveNext
            Next i
            Winsock1(Index).SendData strData + Chr(0) + "OK$"
            DoEvents
        End With
    Case "time"
     For i = 0 To Winsock1.Count - 1
      If Index = IndexSock(i).Index Then
        'ListView1.ListItems(IndexSock(i).JSJ).Text
        Winsock1(Index).SendData "_msgb" + Chr(0) + "您的上机情况是:" + vbCrLf + _
                        "开始时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(1) + vbCrLf + _
                        "到点时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(2) + vbCrLf + _
                        "已用时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(3) + vbCrLf + _
                        "暂停时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(4) + vbCrLf + _
                        "金    额:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(5) + vbCrLf + _
                        "其他费用:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(6) + vbCrLf + _
                        "总 金 额:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(7) + Chr(0) + "OK$"
        DoEvents
        DoEvents
        Exit Sub
      End If
     Next i
    Case "card"
     Data6.Recordset.MoveFirst
      For i = 1 To Data6.Recordset.RecordCount
       'MsgBox Data6.Recordset.Fields("卡号"), , thisStr(2)
       If Data6.Recordset.Fields("卡号") = ThisStr(2) Then

⌨️ 快捷键说明

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