判断MonthCalander中鼠标点中了日期还是翻页按钮!

2016-02-19 12:52 5 1 收藏

今天图老师小编要向大家分享个判断MonthCalander中鼠标点中了日期还是翻页按钮!教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

  uses CommCtrl;

  var OldWindowProc: TWndMethod;

  procedure TForm1.MyWindowProc(var Msg: TMessage);
  begin
    if Msg.Msg = CN_NOTIFY then
    begin
      case TWMNotify(msg).NMHdr.code of
        MCN_GETDAYSTATE: Memo1.Lines.Add('MCN_GETDAYSTATE');//點了翻页
        MCN_SELECT, MCN_SELCHANGE: Memo1.Lines.Add('MCN_SELECT, MCN_SELCHANGE');//選中日期
       end;
    end;

    OldWindowProc(Msg);
  end;

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    OldWindowProc := MonthCalendar1.WindowProc;
    MonthCalendar1.WindowProc := MyWindowProc;
  end;

  549的問題, 吃完飯看了下VCL的源碼, 應該可以! 不過, 點了翻页按鈕也會觸發日期選中的消息的, 相反則不會!

  同時還看到一個:

  发布TDateTimePicker同时修改日期和时间的解决方案

  type
    TCDateTimePicker = class(TDateTimePicker)
    private
      procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
    end;

  function IsBlankSysTime(const ST: TSystemTime): Boolean;
  type
    TFast = array[0..3] of DWORD;
  begin
    Result := (TFast(ST)[0] or TFast(ST)[1] or TFast(ST)[2] or TFast(ST)[3]) = 0;
  end;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  procedure TCDateTimePicker.CNNotify(var Message: TWMNotify);
  begin
    with Message, NMHdr^ do
    begin
      Result := 0;
      if (code = DTN_DATETIMECHANGE) and
        (PNMDateTimeChange(NMHdr)^.dwFlags = GDT_VALID) and (not DroppedDown) and
        (not (ShowCheckBox and IsBlankSysTime(PNMDateTimeChange(NMHdr)^.st))) then
         DateTime := SystemTimeToDateTime(PNMDateTimeChange(NMHdr)^.st);
    end;
    inherited;
  end;

  procedure TForm1.Button1Click(Sender: TObject);
  begin
    with TCDateTimePicker.Create(self) do
    begin
      Left := 100;
      Top := 100;
      Parent := Self;
      Format := 'yyyy-MM-dd hh:mm:ss';
      Visible := true;
    end;
  end;

  可以按上下鍵直接修改, 不錯! 不過要改到可以下拉面板也有時間選擇, 可能難一點!

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  btw: kylix 又說有新的clx要發布, 有點亂, 不是說停止開發了嗎?? 還有BCB, BCBX的新聞也有點亂, 是borland自己的產品定位還不清, 還是只不過傳言有誤??

来源:https://www.tulaoshi.com/n/20160219/1602211.html

延伸阅读
标签: 办公软件
Word 2002有自动翻页功能,可根据需要调整翻页速度,设定该功能后,只须点击一下鼠标,便可对文本自动翻页。 方法如下: 在菜单栏中选择“工具/自定义”,弹出自定义对话框后,选择“命令”选项,在“类别”栏中选择“所有命令”,然后在“命令”框中用鼠标点击“AutoScroll”,并拖到工具栏上,于是工具栏上就多了一个“自动滚动”按...
标签: FLASH flash教程
最近要做些电子书,本来准备去网上买现成的鼠标拖拽翻页效果的组件,但一看报价吓一跳,而且执行效率也不高,一个叫AsFlipPage4。0的组件CPU占用率高居70%,喊价1000RMB,真是恐怖。下载了几个开源的程序自己也看不懂。于是一咬牙自己做了一个。 设置遮罩和阴影之后的最终成品 Flash演示 大家用鼠标拖拽画面四个角即可看见效果 ...
搜狗手机浏览器翻页按钮如何设置   1)首先打开搜狗手机浏览器,打开一个网页,点击菜单设置标签下的系统设置,再点击翻页按钮; 2)出现三个选项选择,一是无选择,二是翻页按钮,三是音量键翻页; 3)点击翻页按钮选项,出现两个上下的可移动的标签,点击可向上或向下翻页;    4)点击音量键翻页,...
标签: Web开发
VBScript的IsDate函数用于判断一个日期是否正确,JavaScript没有这个函数,我们也来写一个类似的函数。需要说明的是,JavaScript中IsDate的参数必须为字符串,且支持6种不同的格式"yyyy-mm-dd || yyyy/mm/dd || dd-mm-yyyy || dd/mm/yyyy || mm-dd-yyyy || mm/dd/yyyy",之所以不能使用日期作为参数是因为JavaScript根本没有不正...
如何准确判断你的排卵日期 一尾一尾的精子犹如水中的小蝌蚪,它们游啊游,谁身强力壮跑在最前面便有幸与卵子结合。那是爱情的结晶——受精卵,也就是你们的小宝贝喔。想要做幸福的准妈咪吗?那请你先来捕捉你的排卵日吧! 精子在女性体内存活时间最长是3天,而卵子只能在排卵24小时之内受精,如果你想怀孕,那么就在排卵前3天至排卵后4天同房...

经验教程

480

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部