由于 TDateTimePicker 只能用于日期或时间,不能同时使用。如果将Kind属性设置为dtkDate,则可以指定自定义DATE格式,但忽略任何TIME格式,并且Time未定义使用该属性。如果将Kind属性设置为dtkTime,则可以指定自定义TIME格式,但忽略任何DATE格式,并且Date未定义使用该属性。虽然通过设置 Format = 'yyyy/MM/dd HH:mm:ss' 可以显示日期和时间,但读取到 DateTime 的值是初始化前的,无法正确读取出日期和时间。
   很多时候,需要同时显示日期和时间,又不想使用两个控件组合显示,如何实现呢?

方法一:通过修改 TDateTimePicker 的源码实现,打开 Vcl.ComCtrls.pas  大约 28144 行:

procedure TDateTimePicker.CNNotify(var Message: TWMNotifyDT);
try
DT := SystemTimeToDateTime(st);
if Kind = dtkDate then
SetDate(DT)
else
SetTime(DT);
// 增加一行
  SetDateTime(DT);
finally
FChanging := False;
end;

然后重新编译这个单元,生成dcu文件,替换原有的,或者是将这个修改的单元添加到自己的工程中。

方法二:基于TDateTimePicker派生新的控件。

unit uZDateTimePicker;

interface

uses
Vcl.ComCtrls, SysUtils; type
TZDateTimePicker = class(TDateTimePicker)
private
procedure SetDateAndTime;
protected
procedure Change; override;
end; implementation { TZDateTimePicker } procedure TZDateTimePicker.Change;
begin
SetDateAndTime
end; procedure TZDateTimePicker.SetDateAndTime;
begin
DateTime := StrToDateTime(Caption);
inherited;
end; end.

方法三:通过读取TDateTimePicker私有属性实现。

  // this class is just to access protected Caption property
THackDateTimePicker = class(TDateTimePicker);

这样使用

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
TDateTimePicker(Sender).DateTime := StrToDateTime(THackDateTimePicker(Sender).Caption);
end;

上面三种方法各有优缺点,我个人更喜欢第三种。

如何同时读取 TDateTimePicker 的 Date 和 Time ?的更多相关文章

  1. TDateTimePicker中Date与Time的误导

    Delphi DateTime,Date,Time TDateTimePicker DateTimeDateTimeDateTimePicker 一.DateTime,Date,Time存储方式本质上 ...

  2. 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题

    今天在做项目过程中,查询一个表中数据时总碰到这个问题:      java.sql.SQLException:Value '0000-00-00' can not be represented as ...

  3. java jxl读取excel中Date类型

    Workbook book = Workbook.getWorkbook(excel); Sheet sheet = book.getSheet(0); int clos = sheet.getCol ...

  4. 读取hdfs目录,并在web页面上展示文件里的内容

    最终效果图 目录树实体类: /** * @Author: DaleyZou * @Description: hdfs 目录结构的实体类,用于展示目录树的支撑操作 * @Date: Created in ...

  5. Java -- Properties类使用 读取配置文档

    Java-Properties类的使用 分类: Java基础 2007-05-11 19:35 2666人阅读 评论(1) 收藏 举报 propertiesxmlimportexceptionstri ...

  6. spark读写Oracle、hive的艰辛之路(二)-Oracle的date类型

    近期又有需求为:导入Oracle的表到hive库中: 关于spark读取Oracle到hive有以下两点需要说明: 1.数据量较小时,可以直接使用spark.read.jdbc(orclUrl,tab ...

  7. linux:date 计算一组命令所花费的执行时间

    date 命令可以用于计算一组命令所花费的执行时间 可以以不同的格式来读取.设置日期. (1) 读取日期: $ date Thu May 20 23:09:04 IST 2010 (2) 打印纪元时: ...

  8. TEC-004-php文件下载任意文件读取漏洞修复

    修改download?u参数值,将/public/files/14842030529.txt,替换为../../../../../../../../../../etc/passwd    functi ...

  9. shell-bash学习03 别名、日期、函数

    别名 使用alias 创建 alias new_command='command sequence' 保存 echo 'alias cmd="command seq"' >& ...

随机推荐

  1. 2.学习SpringMVC注解入门篇

    一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...

  2. word2vector的tensorflow代码实现

    import collections import math import os import random import zipfile import numpy as np import urll ...

  3. python 判断操作系统以及操作系统版本号

    >>> import platform >>> platform.platform() 'Darwin-17.7.0-x86_64-i386-64bit' > ...

  4. bootstrap 多级联动下拉框

    <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  5. 如果用了flex去加一个箭头怎么让他剧中

    左边是做了一个flex:1 右边是span的display:inline-block样式 父元素 .search-car-arrow display flex align-items center' ...

  6. 深入kubernetes调度之NodeSelector

    Kubernetes的调度有简单,有复杂,指定NodeName和使用NodeSelector调度是最简单的,可以将Pod调度到期望的节点上. 1 NodeNamePod.spec.nodeName用于 ...

  7. Mstar 平台(648)唤醒之串口唤醒

    串口唤醒功能主要是从supernova 待机进入PM后,串口接收PC端口发送过来的特定字串,然后将主板唤醒的功能.与IR,KEYPAD,WOL,CEC,MHL 等等基本流程一致,触发源不一样而已. 待 ...

  8. MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)

    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...

  9. zookeeper生产最广泛使用java客户端curator介绍及其它客户端比较

    关于zookeeper的原理解析,可以参见zookeeper核心原理详解,本文所述大多数实践基于对zookeeper原理的首先理解. Curator是Netflix公司开源的一个Zookeeper客户 ...

  10. shell脚本:批量修改文件名(添加/删除文件名中字符)

    添加字符 举例如下:批量创建10个随机字符串的文件,要求每个文件名后面添加_aaa,后缀名不变: [root@localhost goodboy]# ls adddbbdedf.html  baacj ...