用VB设计可以显示农历的日历


  大家都知道,Windows系统中的日历,并没有显示农历的功能,这对于那些喜欢查农历的朋友来说就显得有点儿不太方便了,所以笔者想借助一个第三方农历控件来制作显示农历功能的日历。

(控件地址:http://member.netease.com/jackyyin/download/calendar_ocx.zip)。



  一、添加控件

  在利用农历控件进行编程之前,我们首先要将它加载到我们的VB当中。现在,打开VB6.0,单击“工程”下拉菜单下的“部件”子菜单,选择“控件”选项,接着单击“浏览”,将它添加到列表当中,最后选中它。


图1

  接下来,我们先来了解一下它有哪些属性,这样有助于我们后面的使用。该控件的主要属性如下:

  ChineseAnimal:用于显示农历中的生肖。
  ChineseDate:用于显示农历中的日期。
  ChineseDateType:用于显示农历日期的类型。如果将它赋值为0,将以字符类型返回农历日期;如果将它赋值为“1”,则以字符类型返回农历日期。
  ChineseGanZhi:用于显示农历中的干支。
  ChineseSolarTerm:用于显示农历中的节气。
  DateNow:用于设置农历控件的日期。

  二、设计界面

  在了解了控件之后,就可以先设计日历的界面了。打开VB6.0,利用我们前面的方法,添加农历控件和“Microsoft Calendar Contrl8.0“控件。然后分别将它们放置到Form1中,此外还需要两个Test控件,一个Frame控件和两个OptionButton控件(图2)。


图2

  将Form1中的属性设置如下:

   Caption精美日历

  将Text1和Text2中的属性设置如下:

   MultiLineTrue
   ScrollBars2

  将Frame1中的属性设置如下:

   Caption选择农历显示的类型
  
  将Option1中的属性设置如下:

   Caption字符类型
   ValueTrue

  将Option2中的属性设置如下:

   Caption数字类型

  三、完成代码

  设置完以上属性,我们就可以编写代码了。在Form1中输入代码:

Option Explicit
'显示农历相关信息的过程
Sub dispdated As String
 Dim Ganzhi As String
 Dim Animal As String
 Dim JQ As String
 Dim sMsgChineseDate As String
 '判断参数是否为日期型
 If IsDated Then
  '判断是否在有效的范围内
  If CDated < CDate″1920-1-1″ Or CDated > CDate″2019-12-31″   Then
   Text1.Text = ″精美日历显示范围为1920年到2019年间100年的阳历转换″
  Else
   '设置需要转换的阳历日期
   Calendar2.DateNow = CDated
   '获取农历日期
   sMsgChineseDate = Calendar2.ChineseDate
   ' 获取农历干支年份
   Ganzhi = Calendar2.ChineseGanZhi
   '获取农历属相
   Animal = Calendar2.ChineseAnimal
   '获取农历节气
   JQ = Calendar2.chineseSolarTerm
   '在文本框中显示相关的农历信息
   Text1.Text = ″阳历的 ″ & CDated & ″ 对应农历的 ″ & Ganzhi & _ ″(″ & Animal & ″)″ & sMsgChineseDate & ″ ″ & JQ
  End If
 Else
  Text1.Text = ″请输入有效的日期″
 End If
End Sub

Private Sub Calendar1_Click
 Call dispdateCalendar1.Value '调用显示农历相关信息的过程
End Sub

Private Sub Option1_Click
 If Option1.Value = True Then
  Calendar2.ChineseDateType = 0
 End If
End Sub

Private Sub Option2_Click
 If Option2.Value = True Then
  Calendar2.ChineseDateType = 1
 End If
End Sub

  到此为止,运行这个程序,我们就可以看到一个可以显示农历的日历了。