ToolButton和MonthCalendar实现DateTimePicker的功能

效果图如下:

其中以上功能的实现,核心主要是参考了万一老师的资料,连接:http://www.cnblogs.com/del/archive/2011/05/12/2044112.html

完整代码如下:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ImgList, RzButton,
  Vcl.ExtCtrls, RzPanel, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    ImageList1: TImageList;
    RzToolbar1: TRzToolbar;
    RzToolButton1: TRzToolButton;
    MonthCalendar1: TMonthCalendar;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure RzToolButton1Click(Sender: TObject);
    procedure MonthCalendar1Click(Sender: TObject);
    procedure MonthCalendar1GetMonthBoldInfo(Sender: TObject; Month,
      Year: Cardinal; var MonthBoldInfo: Cardinal);
  private
    { Private declarations }
    procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
    procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  yy,mm,dd: string;  //存年月日
  y1,m1,d1: Word;  //从DecordDate函数解析年月日,然后传值给yy,mm,dd

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DecodeDate(MonthCalendar1.Date,y1,m1,d1);
  yy := IntToStr(y1);
  mm := IntToStr(m1);
  dd := IntToStr(d1);
  MonthCalendar1.Visible := False;
  RzToolButton1.Caption := DateToStr(MonthCalendar1.Date);
  //TFrom和TMonthCalendar都是由TControl的派生来的,TMonthCalendar通过TForm间接继承OnMouseUp、OnMouseDown属性
  TForm1(MonthCalendar1).OnMouseUp := MouseUp;
  TForm1(MonthCalendar1).OnMouseDown := MouseDown;
end;

procedure TForm1.RzToolButton1Click(Sender: TObject);
begin
  MonthCalendar1.Visible := not MonthCalendar1.Visible;
  if MonthCalendar1.Visible then
  begin
    MonthCalendar1.BringToFront;
    Memo1.Align := alRight;
    Memo1.Width := 100;
  end else Memo1.Align := alClient;
end;

procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
  RzToolButton1.Caption := DateToStr(MonthCalendar1.Date);
end;

procedure TForm1.MonthCalendar1GetMonthBoldInfo(Sender: TObject; Month,
  Year: Cardinal; var MonthBoldInfo: Cardinal);
begin
  yy := Format(‘%u‘,[Year]);
  RzToolButton1.Caption := yy + ‘-‘ + mm + ‘-‘ + dd;
end;

procedure TForm1.MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  DecodeDate(MonthCalendar1.Date,y1,m1,d1);
  dd := IntToStr(d1);
  if Y >= 48 then  //测量所得,单击日历横线下面的区域日历隐藏
  begin
    MonthCalendar1.Visible := False;
    Memo1.Align := alClient;
  end;
end;

procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
  DecodeDate(MonthCalendar1.Date,y1,m1,d1);
  mm := IntToStr(m1);
  //dd := IntToStr(d1);
  RzToolButton1.Caption := DateToStr(MonthCalendar1.Date);
end;

end.

 

时间: 2024-10-25 13:24:16

ToolButton和MonthCalendar实现DateTimePicker的功能的相关文章

(转)datagridview 自定义列三步走

本文转载自:http://blog.csdn.net/zx13525079024/article/details/4814642 我们如果想自定义实现datagridview的某列,例如是datagridview的某列显示为一个日期控件datatimepicker,或者颜色拾取器控件colorpicker,我们可以大致按如下模式来设计 1. 设置列,创建一个类,使之继承DataGridViewColumn列 public partial class DataGridViewCalendarCol

C#中将dateTimePicker初始值设置为空

最近在做一个小项目,有一个功能是根据用户选择条件查询数据,要求时间控件的默认值为空,只有当用户修改了时间,才根据时间查询.简单的说,就是默认或者点击清空按钮的情况下,时间控件dateTimePicker的值为空,当触发事件ValueChanged时再显示相对应的时间. 开始,我以为修改控件的默认值为空就可以了,但是我失败了,dateTimePicker不允许空值.尝试了很多次之后我开始在网上找资料,寻到了如下方法: 窗体初始化或者放一个清空按钮,点击清空按钮时执行如下代码: C#代码 : thi

visual c#设计的多功能关机程序

Visual C# 设计多功能关机程序 许多软件都有自动关机功能, 特别是在长时间 下载 的时候, 这个功能可是使你不用以守候在计算机前面, 而电脑却能按照 您事先的设定自动关闭.现在我们用 visual C# 来编写一个多功能的关机程序.该程序具有:定时关机.倒计时关机.关机 提醒.系统信息获取等四项功能 , 可设定关机时间精确到秒.并且让你很快掌握 Visual C# 中对 API 的操作程序. 一 . 设计关闭 Windows 窗体 界面的设计 新建一个标准工程,向工程中增加一个 Wind

物联网平台设计心得:DateTimePicker实现选择联动

所谓的选择联动,就是指,当我DateTimePicker1选择2月4号的时候,我DateTimePicker2只能选择2月4号和2月5号两天,当然你可以自行规定要选择的日期.这在一些图表查询条件里面是很常用的一个功能.下面我们就来看看如何设计. DateTimePicker的选取与使用 在这里,我们使用的DateTimePicker是一个开源的组件,他的model名称为:ui.bootstrap.datetimepicker,我们可以去这个网址找到其相关的内容:http://dalelotts.

C#使用命令模式实现撤销和恢复功能

第一次写关于设计模式的随笔,最近在使用C#做一个WinForm的项目,其中要求需要支持撤销和恢复功能,想到了以前看过Command模式支持撤销和恢复操作,就在项目中使用了.对命令模式理解的不够深,各位看客请指正. Gof23种设计模式中的Command模式,其意图是这么描述的“将一个请求封装为一个对象,从而是你可以用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作”:另外个人的理解就是可以将调用者和接受者解耦出来.下图为Comand的类图: .首先理解将调用者和接受者解

JQuery 常用积累(五)Datetimepicker和Lodop

web项目中日期选择器和打印这两个功能是非常常见,将项目中使用的日期选择器和打印控件,在这里总结归纳,为方便后面使用. 1.Datetimepicker a.官方API:http://www.bootcss.com/p/bootstrap-datetimepicker/ 里面有详细的Datetimepicker介绍,包括支持的方法.设置的选项.事件..... b.项目集成Datetimepicker实例:    这是一款依赖与bootsrap样式的控件,所以你项目中需要引入的js如下: <scr

在asp.net mvc4项目里bootstrap datetimepicker控件的使用

前段时间写了一篇关于调用阿里大于的短信接口来开发例会短信群发通知功能的文章http://www.cnblogs.com/zhouyuangan/p/apicall_1.html,其中的例会时间是需求中的重中之重,它需要满足“格式化”,“易输入”这两点,对短信费用关心的开发者要知道长短信是两条短信费用之和,因此,例会时间不能随意交给用户自定义输入:要考虑到“易输入”这点,只能选择日期选择控件来辅助用户输入,由于日期选择控件较为小巧使用,在页面中引入并不是难事.在本篇文章中,使用的是bootstra

Silverlight 拾取日期和时间的控件-DateTimePicker

实现了一个Sliverlight可拾取时间和日期的控件 先看产品使用时功能: 右侧按键"..."点击后的样子 下方时间选择后的样子 本控件失去焦点后自动弹回下拉框. 目前还存在一点小问题就是无法很好地通过键盘输入编辑时间. 实现过程: 界面就是TextBox.Button.GlobalCalendar和TimePicker的组合使用 <UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/

dateTimePicker日期时间插件-----限定节假日调休的可选择性

需求:在项目中需要一款这样的日期插件,可以选择年月日,时分秒,对法定节假日不能选择,因法定节假日进行的调休可以选择: 现在使用的比较多的日期插件比如:Wdatepicker,jqueryUI的datepicker,都有周六天的限制选择,但是不能满足上述需求,所以在这里对jqUI的datepicker进行扩增,实现上述功能,并对IE8进行兼容处理,如图所示: 代码连接:https://github.com/ilikecandice/dateTimePicker/tree/master html部分