VB自定义日期控件的笔记

1,

Select Case Month(dates) '得到各月份天数 Case 1, 3, 5, 7, 8, 10, 12 r = 31 Case 4, 6, 9, 11 r = 30 Case 2 If Year(dates) Mod 4 = 0 And Year(dates) Mod 100 <> 0 Or Year(dates) Mod 400 = 0 Then r = 29 Else '闰年判断,是闰年则2月份为29天,否则28 r = 28 End If End Select

2,

'星期判断,确定日历布局 ty3 = Weekday(CDate(Format(dates, "YYYY-MM"))) '本周第几天,(第一天为周日) For I = 1 To r If I < 10 Then Label7(I + ty3 - 1) = "0" & I Else Label7(I + ty3 - 1) = I End If '刷新当日的label颜色并将过期日期颜色设为不可用 If dates < Date Then Label7(I + ty3 - 1).ForeColor = &H80000011 Else If Month(dates) = Month(Date) And I < Day(dates) Then Label7(I + ty3 - 1).ForeColor = &H80000011 End If If dates = Date And I = Day(dates) Then Label7(I + ty3 - 1).ForeColor = &HFF& Next I

3,

'初始化日期控件信息 '还原日期 For I = 1 To 42 Label7(I).Caption = "" Label7(I).ForeColor = &H80000012 Next I Select Case Month(Date) Case 1 Combo4.Text = "一月" r = 31 Case 2 Combo4.Text = "二月" '闰年判断,是闰年则2月份为29天,否则28 If Year(Date) Mod 4 = 0 And Year(Date) Mod 100 <> 0 Or Year(Date) Mod 400 = 0 Then r = 29 Else r = 28 End If Case 3 Combo4.Text = "三月" r = 31 Case 4 Combo4.Text = "四月" r = 30 Case 5 Combo4.Text = "五月" r = 31 Case 6 Combo4.Text = "六月" r = 30 Case 7 Combo4.Text = "七月" r = 31 Case 8 Combo4.Text = "八月" r = 31 Case 9 Combo4.Text = "九月" r = 30 Case 10 Combo4.Text = "十月" r = 31 Case 11 Combo4.Text = "十一月" r = 30 Case 12 Combo4.Text = "十二月" r = 31 End Select

4,

总结:

初始化6*7的二维数组,确定当前月的天数和当月1号的星期,可用循环来实现,同时标注颜色,如过期灰色,当日红色等。label点击事件前判断颜色,过期则不可用。

代码总结与记录,仅供个人参考,未优化,效率低下是目前主要的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文件中含有两个版本,一个是来自于网络的原版,另一个是我完善后的版本。本件唯一的缺点是生成的OCX文件在程序From界面上占用很高的内存,而且响应速度极慢,希望有能力的爱好者完善一下。 原版下载地址:http://yidong-telecom.cnzz.cn/cnzz_program/web/2011-11/13/25.rar -- ============================================================ -- -- 赵永辉对件 gkMonth 的完善日志 -- ============================================================ -- 2012-7-24 22:50:59 1、在件的属性界面上,增加了中文星期的标题选项: 中文单字符: 一、二、三、四、五、六、日 中文双字符: 周一、周二、周三、周四、周五、周六、周日 中文全称:星期一、星期二、星期三、星期四、星期五、星期六、星期日 2、修改代码,解决中文的星期标签中,汉字不能显示的问题。 3、修改代码,解决月份右键: 选择1~10月时,标题中仅显示一个汉字“一”、“二”...“十” 选择11、12月时,标题的月份中仅显示汉字“十” 现在正常显示为“四月”、“十月”、“十二月”等。 2012-7-28 15:35:30 1、在件表面的日期上,可以点击右键跳转到当前日期。 菜单是中文"转到今天"还是"Go to Today",由属性DayHeaderFormat决定,选择带CN的选项, 这个菜单就是中文的,否则就是英文的。 2、在年份上的右键菜单中,在今年的菜单条目后面追加标记“- 今年 -”,或“- Now -”。自动判断中英文。 3、在月份上的右键菜单中,如果选中的年份为今年,则在当月的菜单条目后面追加标记“- 本月 -”,或“- Now -”。自动判断中英文。 -- ============================================================ -- -- 赵永辉对件 gkDatePicker 的完善日志 -- ============================================================ -- 2012-7-28 18:07:35 1、在文本框中增加回车显示日历的快捷键。 文本框中原有快捷键F4或ALT+DownArrow为显示日历,在日历上回车则更新文本框的日历内容。 2、在日历显示时,如果运行在中文简体的环境中,则默认显示日历的星期标题为单个汉字, 英文环境中则保持原有的单字母显示。 3、修改默认的选中日期的颜色为突出显示(颜色值为&H8000000D;&)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值