上一篇 | 下一篇

也谈Delphi中的日期输入

发布: 2008-6-26 20:29 | 作者: admin | 来源: | 查看: 0次

width="84%">也谈Delphi中的日期输入

河 海 大 学 计 算 机 系 研

----

日 期 输 入 虽 然 是 小 事, 但 却 几 乎 每 一 个 程 序 里 都 会 碰

到, 处 理 不 好 也 会 惹 出 许 多 麻 烦(2000 年 问 题 即 是 日 期

引 起 的 世 界 性 麻 烦)。 现 谈 一 谈 笔 者 在Delphi 编 程 中 对

日 期 处 理 的 一 些 经 验 和 感 受, 请 大 家 指 正。

----

在 程 序 中 使 用 现 成 的 控 件 是 现 在 编 程 的 一 种 趋 势, 其

实,DateTimePicker 就 是 一 个 很 好 的 控 件, 关 键 是 如 何 灵 活 变

通 地 运 用。DateTimePicker 是Microsoft 向Windows95 通 用 控 件 库 新 添 的

控 件, 是 输 入 日 期 和 时 间 的 简 单 工 具, 具 有 良 好 的 图

形 界 面。 该 控 件 在Delphi 名 为Win32 的 控 件 面 板 中, 对 其kind

属 性 的 选 择 可 以 确 定 是 输 入 时 间 还 是 日 期, 在 日 期 输

入 中 又 有 一 些 属 性 可 供 不 同 的 选 择, 其 中Datamode 有dmUpDown

和dmComboBox 两 个 选 项, 选 择 前 者, 就 可 以 在 输 入 日 期 时,

用 鼠 标 点 激 向 上 或 向 下 按 钮, 从 而 可 以 非 常 方 便 地 对

年、 月、 日 进 行 递 增 或 递 减; 选 择 后 者, 在 运 行 时 用

鼠 标 点 激, 就 会 弹 出 一 个 界 面 友 好 的 对 话 框, 从 而 可

以 从 中 选 取 日 期, 这 时 日 是 从 相 应 的 月 历 表 中 选 取,

年 和 月 则 仍 是 通 过 按 箭 头 按 钮 递 增 或 递 减。 但 不 管 是dmUpDown

还 是dmComboBox, 都 可 以 在 其 上 直 接 输 入 年 月 日 的 值, 并

且 自 动 地 保 证 日 期 的 有 效 性( 如 闰 年 问 题 等), 因 此

完 全 涵 盖 了《Delphi 中 日 期 输 入 法 二 则》 一 文 中 自 己 定

制 的 日 期 输 入 窗 口 的 功 能 和 速 度。Dateformat 属 性 有dfLong 和dfShort

两 种 选 择, 前 者 为 长 日 期 型( 如1999 年2 月16 日, 如 果 得

到 的 不 是 理 想 的 形 式, 可 调 整Windows 控 制 面 板 上 区 域 设

置 中 的 日 期 格 式 以 及DateTimePicker 的Font 属 性 的Charset 值, 一

般 情 况 取DEFAULT_CHARSET 或GB2312_CHARSET 即 可), 后 者 为 短 日 期

型( 如99-2-16), 考 虑 到 跨 世 纪 问 题, 短 日 期 要 慎 用。 但

长 日 期 型 的 值 不 可 直 接 作 为 日 期 值 赋 给 日 期 型 的 变

量, 要 做 一 点 转 换 工 作, 举 例 如 下:

procedure

Tform1.DateTimePicker1CloseUp

(Sender:

TObject);

var

Year,

Month, Day: Word;

Datetime:TDatetime;

begin

DecodeDate(DateTimePicker1.datetime,

Year,

Month, Day);

//将DateTimePicker1的年月日的值分别赋给

Year,

Month, Day

EditDATE.Text:=inttostr(year)+'-'

+inttostr(Month)+'-'+inttostr(Day);

//

EditDATE为TDBEdit型的编辑框,

对应一个日期型的数据表字段

//若将其变为短日期型的,

可以发现Delphi把短日期即00--99年都解释

//为1900--1999年,

而不受Windows控制面板中区域设置中格式的控制

Datetime:=EncodeDate(Year,Month,Day);

//把年月日合成为日期值

end;

----

上 面 这 个 小 程 序 中,form1 的DateTimePicker1 的Dateformat 属 性 为dfLong,Datamode

的 属 性 为dmComboBox。 DateTimePicker1CloseUp 为 日 期 输 入 对 话 框 缩

起 时 发 生 的 事 件, 也 可 以 用OnChang 事 件, 即DateTimePicker 发 生

变 化 时 触 发, 则Datamode 属 性 无 论 取 何 值 都 可 使 用。

字号: | 推荐给好友

31/3123>

评分:0

我来说两句