看实例玩编程(20):学做可以显示农历的日历

软件世界

  大家都知道,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)。

  将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

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