看实例玩编程(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
到此为止,运行这个程序,我们就可以看到一个可以显示农历的日历了。

