frmRiLi.frm
上传用户:djzm888
上传日期:2013-02-15
资源大小:867k
文件大小:17k
源码类别:

其他数据库

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
  3. Object = "{FE0065C0-1B7B-11CF-9D53-00AA003C9CB6}#1.1#0"; "COMCT232.OCX"
  4. Begin VB.Form frmRiLi 
  5.    BorderStyle     =   3  'Fixed Dialog
  6.    Caption         =   "日历"
  7.    ClientHeight    =   2985
  8.    ClientLeft      =   45
  9.    ClientTop       =   330
  10.    ClientWidth     =   4485
  11.    ControlBox      =   0   'False
  12.    BeginProperty Font 
  13.       Name            =   "宋体"
  14.       Size            =   10.5
  15.       Charset         =   134
  16.       Weight          =   400
  17.       Underline       =   0   'False
  18.       Italic          =   0   'False
  19.       Strikethrough   =   0   'False
  20.    EndProperty
  21.    Icon            =   "frmRiLi.frx":0000
  22.    KeyPreview      =   -1  'True
  23.    LinkTopic       =   "Form1"
  24.    MaxButton       =   0   'False
  25.    MinButton       =   0   'False
  26.    ScaleHeight     =   2985
  27.    ScaleWidth      =   4485
  28.    StartUpPosition =   2  '屏幕中心
  29.    Begin VB.CommandButton Command1 
  30.       Caption         =   "确定(&K)"
  31.       Height          =   435
  32.       Left            =   3120
  33.       TabIndex        =   3
  34.       Top             =   75
  35.       Width           =   1275
  36.    End
  37.    Begin VB.PictureBox PicMonth 
  38.       BackColor       =   &H00FFFFFF&
  39.       BeginProperty Font 
  40.          Name            =   "宋体"
  41.          Size            =   9
  42.          Charset         =   134
  43.          Weight          =   400
  44.          Underline       =   0   'False
  45.          Italic          =   0   'False
  46.          Strikethrough   =   0   'False
  47.       EndProperty
  48.       Height          =   405
  49.       Left            =   1665
  50.       ScaleHeight     =   345
  51.       ScaleWidth      =   810
  52.       TabIndex        =   5
  53.       Top             =   90
  54.       Width           =   870
  55.       Begin ComCtl2.UpDown VScrollMonth 
  56.          Height          =   360
  57.          Left            =   540
  58.          TabIndex        =   10
  59.          Top             =   -15
  60.          Width           =   270
  61.          _ExtentX        =   476
  62.          _ExtentY        =   635
  63.          _Version        =   327681
  64.          BuddyControl    =   "txtMonth"
  65.          BuddyDispid     =   196611
  66.          OrigLeft        =   540
  67.          OrigRight       =   810
  68.          OrigBottom      =   360
  69.          SyncBuddy       =   -1  'True
  70.          Wrap            =   -1  'True
  71.          BuddyProperty   =   65547
  72.          Enabled         =   -1  'True
  73.       End
  74.       Begin VB.TextBox txtMonth 
  75.          Alignment       =   2  'Center
  76.          Appearance      =   0  'Flat
  77.          BorderStyle     =   0  'None
  78.          BeginProperty Font 
  79.             Name            =   "宋体"
  80.             Size            =   12
  81.             Charset         =   134
  82.             Weight          =   400
  83.             Underline       =   0   'False
  84.             Italic          =   0   'False
  85.             Strikethrough   =   0   'False
  86.          EndProperty
  87.          Height          =   360
  88.          Left            =   60
  89.          MaxLength       =   2
  90.          TabIndex        =   2
  91.          Text            =   "3"
  92.          Top             =   60
  93.          Width           =   420
  94.       End
  95.    End
  96.    Begin VB.PictureBox picYear 
  97.       BackColor       =   &H00FFFFFF&
  98.       BeginProperty Font 
  99.          Name            =   "宋体"
  100.          Size            =   9
  101.          Charset         =   134
  102.          Weight          =   400
  103.          Underline       =   0   'False
  104.          Italic          =   0   'False
  105.          Strikethrough   =   0   'False
  106.       EndProperty
  107.       Height          =   405
  108.       Left            =   105
  109.       ScaleHeight     =   345
  110.       ScaleWidth      =   1080
  111.       TabIndex        =   4
  112.       Top             =   90
  113.       Width           =   1140
  114.       Begin ComCtl2.UpDown VScrollYear 
  115.          Height          =   375
  116.          Left            =   810
  117.          TabIndex        =   9
  118.          Top             =   -15
  119.          Width           =   270
  120.          _ExtentX        =   476
  121.          _ExtentY        =   661
  122.          _Version        =   327681
  123.          BuddyControl    =   "txtYear"
  124.          BuddyDispid     =   196613
  125.          OrigLeft        =   810
  126.          OrigTop         =   15
  127.          OrigRight       =   1080
  128.          OrigBottom      =   390
  129.          SyncBuddy       =   -1  'True
  130.          Wrap            =   -1  'True
  131.          BuddyProperty   =   65547
  132.          Enabled         =   -1  'True
  133.       End
  134.       Begin VB.TextBox txtYear 
  135.          Alignment       =   2  'Center
  136.          Appearance      =   0  'Flat
  137.          BorderStyle     =   0  'None
  138.          BeginProperty Font 
  139.             Name            =   "宋体"
  140.             Size            =   12
  141.             Charset         =   134
  142.             Weight          =   400
  143.             Underline       =   0   'False
  144.             Italic          =   0   'False
  145.             Strikethrough   =   0   'False
  146.          EndProperty
  147.          Height          =   360
  148.          Left            =   105
  149.          MaxLength       =   4
  150.          TabIndex        =   1
  151.          Text            =   "2000"
  152.          Top             =   45
  153.          Width           =   555
  154.       End
  155.    End
  156.    Begin MSFlexGridLib.MSFlexGrid msfGrid 
  157.       Height          =   2400
  158.       Left            =   0
  159.       TabIndex        =   0
  160.       Top             =   615
  161.       Width           =   4485
  162.       _ExtentX        =   7911
  163.       _ExtentY        =   4233
  164.       _Version        =   393216
  165.       Rows            =   7
  166.       Cols            =   7
  167.       FixedCols       =   0
  168.       BackColorFixed  =   12648447
  169.       ForeColorFixed  =   192
  170.       BackColorSel    =   12582912
  171.       AllowBigSelection=   0   'False
  172.       TextStyleFixed  =   3
  173.       HighLight       =   0
  174.       FillStyle       =   1
  175.       ScrollBars      =   0
  176.       FormatString    =   "dddd"
  177.    End
  178.    Begin VB.TextBox txtFocus 
  179.       Height          =   315
  180.       Left            =   1470
  181.       TabIndex        =   8
  182.       Text            =   "Text1"
  183.       Top             =   1830
  184.       Width           =   855
  185.    End
  186.    Begin VB.Label Label2 
  187.       AutoSize        =   -1  'True
  188.       BackColor       =   &H00C0C0C0&
  189.       Caption         =   "月"
  190.       BeginProperty Font 
  191.          Name            =   "宋体"
  192.          Size            =   12
  193.          Charset         =   134
  194.          Weight          =   400
  195.          Underline       =   0   'False
  196.          Italic          =   0   'False
  197.          Strikethrough   =   0   'False
  198.       EndProperty
  199.       Height          =   240
  200.       Left            =   2580
  201.       TabIndex        =   7
  202.       Top             =   195
  203.       Width           =   240
  204.    End
  205.    Begin VB.Label Label1 
  206.       AutoSize        =   -1  'True
  207.       BackColor       =   &H00C0C0C0&
  208.       Caption         =   "年"
  209.       BeginProperty Font 
  210.          Name            =   "宋体"
  211.          Size            =   12
  212.          Charset         =   134
  213.          Weight          =   400
  214.          Underline       =   0   'False
  215.          Italic          =   0   'False
  216.          Strikethrough   =   0   'False
  217.       EndProperty
  218.       Height          =   240
  219.       Left            =   1365
  220.       TabIndex        =   6
  221.       Top             =   195
  222.       Width           =   240
  223.    End
  224. End
  225. Attribute VB_Name = "frmRiLi"
  226. Attribute VB_GlobalNameSpace = False
  227. Attribute VB_Creatable = False
  228. Attribute VB_PredeclaredId = True
  229. Attribute VB_Exposed = False
  230. Option Explicit
  231. Public mRetDate As String
  232. Dim mOldRow As Integer
  233. Dim mOldCol As Integer
  234. Dim mCurDay As Integer
  235. Dim misToCheckMouse As Boolean '是否检查mouserow,mousecol
  236. Dim misRefresh As Boolean '要不要刷新行和列,在RefreshDayList更换行列时 不misrefresh=false
  237. Dim misStart As Boolean '判断是否刚开始,开始的时候不刷新RefreshDayList
  238. Dim mSelDate As Integer '选择的日期
  239. Private Sub Command1_Click()
  240. '    Dim tmpDate As String
  241. '    Select Case Trim(Me.Tag)
  242. '        Case UCase("frmMain")
  243. '            tmpDate = getDate
  244. '            frmMain.mRetDate = tmpDate
  245. '    End Select
  246.     mRetDate = getDate
  247.     Me.Hide
  248. End Sub
  249. Private Function getDate() As String
  250.     getDate = Format(DateSerial(Val(txtYear), Val(txtMonth), _
  251.                 Val(msfGrid.TextMatrix(msfGrid.row, msfGrid.col))), _
  252.                 "yyyy-mm-dd")
  253. End Function
  254. Private Sub Form_Activate()
  255.     misToCheckMouse = False
  256.     misRefresh = False
  257.     misStart = True
  258.     mSelDate = Day(Date)
  259.     mCurDay = mSelDate 'Day(Date)
  260.     txtYear = Year(Date)
  261.     txtMonth = Month(Date)
  262.     IniVscroll
  263.     iniGrid
  264.     misStart = False
  265.     RefreshDayList
  266. End Sub
  267. Private Sub IniVscroll()
  268.     With VScrollYear
  269.         .Max = 9999
  270.         .Min = 1919
  271.         .Increment = 1
  272.         '.SmallChange = 1
  273.         .Value = Year(Date)
  274.     End With
  275.     With VScrollMonth
  276.         .Max = 12
  277.         .Min = 1
  278.         '.LargeChange = 1
  279.         .Increment = 1
  280.         .Value = Month(Date)
  281.     End With
  282. End Sub
  283. Private Sub iniGrid()
  284.     With msfGrid
  285.         .Rows = 7
  286.         .Cols = 7
  287.         .FixedRows = 1
  288.         .FixedCols = 0
  289.         .Height = 2406
  290.         .Width = 4480
  291.         .BackColorFixed = &HC0E0FF
  292.         .BackColorSel = &H8000000D 'vbWhite
  293.         .ForeColorSel = vbWhite
  294.         .BackColorBkg = &H8000000E
  295.         .ForeColorFixed = &HC0&      '&HFF&
  296.         .FormatString = "^日" & vbTab _
  297.                         & "^一" & vbTab _
  298.                         & "^二" & vbTab _
  299.                         & "^三" & vbTab _
  300.                         & "^四" & vbTab _
  301.                         & "^五" & vbTab _
  302.                         & "^六" & vbTab
  303.         Dim I As Integer
  304.         For I = 0 To .Rows - 1
  305.             If I = 0 Then
  306.                 .RowHeight(I) = 336
  307.             Else
  308.                 .RowHeight(I) = 336
  309.             End If
  310.             
  311.         Next
  312.         For I = 0 To .Cols - 1
  313.             .ColWidth(I) = 625
  314.         Next
  315.     End With
  316. End Sub
  317. 'Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  318. '    If UnloadMode = vbFormControlMenu Then
  319. '        Select Case Trim(Me.Tag)
  320. '            Case UCase("frmMain")
  321. '                frmMain.mRetDate = getDate
  322. '        End Select
  323. '    End If
  324. 'End Sub
  325. Private Sub msfGrid_Click()
  326.     With msfGrid
  327.         If Trim(.TextMatrix(.row, .col)) <> Empty Then
  328.             mSelDate = Val(.TextMatrix(.row, .col))
  329.         End If
  330.     End With
  331. End Sub
  332. Private Sub RefreshDayList()
  333.     Dim MaxDay As Integer
  334.     Dim FirstWeekDay As Integer
  335.     Dim DayRow As Integer
  336.     Dim DayCol As Integer
  337.     Dim I As Integer
  338.     With msfGrid
  339.         If Trim(txtYear) <> Empty And Trim(txtMonth) <> Empty Then
  340.             MaxDay = GetMaxDayInAMonth(Val(txtYear), Val(txtMonth))
  341.             FirstWeekDay = Weekday(DateSerial(Val(txtYear), Val(txtMonth), 1))
  342.             DayRow = 1
  343.             DayCol = FirstWeekDay - 1
  344.             For I = 0 To DayCol - 1
  345.                 '.TextArray(DayRow * 7 + i) = ""
  346.                 .TextArray(faIndex(DayRow, I)) = ""
  347.             Next I
  348.             
  349.             .Cols = 7
  350.             .Rows = 7
  351.             setGridText DayCol, 1, MaxDay, False, msfGrid
  352.             setGridText DayCol, MaxDay + 1, (.Rows) * (.Cols - 1), True, msfGrid
  353.             mCurDay = mSelDate ' Day(Date)
  354.             If mCurDay > MaxDay Then
  355.                 mCurDay = MaxDay
  356.             End If
  357.             Dim myRow As Integer
  358.             Dim myCol As Integer
  359.             myCol = (DayCol + mCurDay) Mod .Cols
  360.             myRow = ((DayCol + mCurDay)  .Cols) + 1
  361.             If myCol = 0 Then
  362.                 myCol = 6
  363.                 myRow = myRow - 1
  364.             Else
  365.                 myCol = myCol - 1
  366.                 myRow = myRow
  367.             End If
  368.             If myRow > 0 Then
  369.             If .Redraw Then .Redraw = False
  370.             misRefresh = True
  371.             mOldRow = myRow
  372.             mOldCol = myCol
  373.             .row = myRow
  374.             .col = myCol
  375. '            misRefresh = False
  376.             If Not .Redraw Then .Redraw = True
  377.             End If
  378.         End If
  379.     End With
  380. End Sub
  381. Private Sub setGridText(DayCol As Integer, StartDay As Integer, EndDay As Integer, isEmpty As Boolean, msfGrid As MSFlexGrid)
  382.     Dim I As Integer
  383.     Dim myRow As Integer
  384.     Dim myCol As Integer
  385.     With msfGrid
  386.         For I = StartDay To EndDay
  387.             myCol = (DayCol + I) Mod .Cols
  388.             myRow = ((I + DayCol)  .Cols) + 1
  389.             If myRow > .Rows - 1 Then Exit For
  390.             If myCol = 0 Then
  391.                 myCol = 6
  392.                 myRow = myRow - 1
  393.             Else
  394.                 myCol = myCol - 1
  395.                 myRow = myRow
  396.             End If
  397.             Dim tmpStr As String
  398.             If isEmpty Then
  399.                 tmpStr = Empty
  400.             Else
  401.                 tmpStr = I
  402.             End If
  403.             .TextArray(faIndex(myRow, myCol)) = tmpStr
  404.         Next
  405.     End With
  406. End Sub
  407. Private Sub msfGrid_DblClick()
  408.     Command1_Click
  409. End Sub
  410. Private Sub msfGrid_EnterCell()
  411.     With msfGrid
  412.         .CellBackColor = vbBlue
  413.         .CellForeColor = vbWhite
  414.     End With
  415. End Sub
  416. Private Sub msfGrid_GotFocus()
  417.     misToCheckMouse = True
  418. End Sub
  419. Private Sub msfGrid_LeaveCell()
  420.     With msfGrid
  421.         .CellBackColor = vbWhite
  422.         .CellForeColor = vbBlack
  423.     End With
  424. End Sub
  425. Private Sub msfGrid_LostFocus()
  426.     misToCheckMouse = False
  427.     With msfGrid
  428.         mOldRow = .row
  429.         mOldCol = .col
  430.     End With
  431.     misRefresh = False
  432. End Sub
  433. Private Sub msfGrid_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  434.     With msfGrid
  435.         .row = .row
  436.         .col = .col
  437.         .RowSel = .row
  438.         .ColSel = .col
  439.     End With
  440. End Sub
  441. Private Sub msfGrid_SelChange()
  442.     With msfGrid
  443.         Dim myRow As Integer
  444.         Dim myCol As Integer
  445.         If Trim(.TextMatrix(.row, .col)) = Empty Then
  446.             'If .Redraw Then .Redraw = False
  447.             .row = mOldRow
  448.             .col = mOldCol
  449.             If .Redraw Then .Redraw = False
  450.         Else
  451.             'If Not .Redraw Then .Redraw = True
  452.             mSelDate = Val(.TextMatrix(.row, .col))
  453.         End If
  454.         If misToCheckMouse Then
  455.             myRow = .MouseRow
  456.             myCol = .MouseCol
  457.         Else
  458.             If Not misRefresh Then
  459.                 myRow = mOldRow
  460.                 myCol = mOldCol
  461.                 .row = mOldRow
  462.                 .col = mOldCol
  463.             Else
  464.                 myRow = .row
  465.                 myCol = .col
  466.             End If
  467.         End If
  468.             If myRow = 0 Then 'Or Trim(.TextMatrix(myRow, myCol)) = Empty Then 'If .MouseRow = 0 Or Trim(.TextMatrix(.MouseRow, .MouseCol)) = Empty Then
  469.                 .row = mOldRow
  470.                 .col = mOldCol
  471.                 If .Redraw Then .Redraw = False
  472.             Else
  473.                 mOldRow = .row
  474.                 mOldCol = .col
  475.                 If Not .Redraw Then .Redraw = True
  476.             End If
  477.     End With
  478. End Sub
  479. Private Sub txtMonth_Change()
  480.    If Trim(txtMonth) = Empty Then Exit Sub
  481. '    VScrollMonth.Value = Val(txtMonth.Text)
  482.     If Not misStart Then
  483.         RefreshDayList
  484.     End If
  485. End Sub
  486. Private Sub txtMonth_GotFocus()
  487.     GotFocus txtMonth
  488. End Sub
  489. Private Sub txtMonth_KeyDown(KeyCode As Integer, Shift As Integer)
  490.     With VScrollMonth
  491.         Select Case KeyCode
  492.             Case 13
  493.                 If (Val(txtMonth) >= .Min) And (Val(txtMonth) <= .Max) Then
  494.                     SendKeyTab KeyCode
  495.                 End If
  496.             Case vbKeyUp
  497.                 If Val(txtMonth) < .Max Then txtMonth = Val(txtMonth) + 1
  498.             Case vbKeyDown
  499.                 If Val(txtMonth) > .Min Then txtMonth = Val(txtMonth) - 1
  500.         End Select
  501.     End With
  502. End Sub
  503. Private Sub txtMonth_KeyPress(KeyAscii As Integer)
  504.     KeyAscii = ValiText(KeyAscii, "123456789", True)
  505. End Sub
  506. Private Sub txtYear_Change()
  507.     If Len(Trim(txtYear)) < 4 Then Exit Sub
  508. '    VScrollYear.Value = Val(txtYear.Text)
  509.     If Not misStart Then
  510.         RefreshDayList
  511.     End If
  512. End Sub
  513. Private Sub txtYear_GotFocus()
  514.     GotFocus txtYear
  515. End Sub
  516. Private Sub txtYear_KeyDown(KeyCode As Integer, Shift As Integer)
  517.     With VScrollYear
  518.         Select Case KeyCode
  519.             Case 13
  520.                 If (Val(txtYear) >= .Min) And (Val(txtYear) <= .Max) Then
  521.                     SendKeyTab KeyCode
  522.                 End If
  523.             Case vbKeyUp
  524.                 If Val(txtYear) < .Max Then txtYear = Val(txtYear) + 1
  525.             Case vbKeyDown
  526.                 If Val(txtYear) > .Min Then txtYear = Val(txtYear) - 1
  527.         End Select
  528.     End With
  529. End Sub
  530. Private Sub txtYear_KeyPress(KeyAscii As Integer)
  531.     KeyAscii = ValiText(KeyAscii, "0123456789", True)
  532. End Sub
  533. Private Sub VScrollMonth_Change()
  534. '    txtMonth = VScrollMonth.Value
  535. End Sub
  536. Private Sub VScrollYear_Change()
  537. '    txtYear = VScrollYear.Value
  538. End Sub
  539. Function faIndex(row As Integer, col As Integer) As Long
  540.      faIndex = row * msfGrid.Cols + col
  541. End Function