各位在侠您好:
   我想在输入日期时,点击edit1,自动弹出一个窗口供选择日期(包括年,月,日),我见过别的程序可以实现,只不过我没有发现这样的控件,我是delphi的菜鸟,帮帮我好吗?
在上,小弟先谢了!

解决方案 »

  1.   

    请问,DELPHI中有控件吗?楼主太菜了吧,我敢说楼主一定不知道怎么结贴!!
      

  2.   

    有,在Win32而中!DateTimePicker.date
      

  3.   

    TO:fei19790920(饭桶的马甲)
    你错了,我肯定知道的,结帖都不会,我也太菜了吧!
    我是学VC的,去年刚毕业,
    因为快速开发的需要,不得不临时学delphi
    呵呵,,打开编译器,还没有把控件看一遍呢,
    我打算用dbexpress,串口通信,还有多信程,后台msserver,这四者结合起来,
    大概四个月后,两个半月后,要交货的!
    今天让大家笑话了!
    不好意思!
      

  4.   

    我又了找了一篇文章,大家看看吧!
    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
        //将DateTimePicker1的年月日的值分别赋给 Year, Month, Day
        DecodeDate(DateTimePicker1.datetime, Year, Month, Day);    // EditDATE为TDBEdit型的编辑框,对应一个日期型的数据表字段
        EditDATE.Text:=inttostr(year)+'-' +inttostr(Month)+'-'+inttostr(Day);       //若将其变为短日期型的,可以发现Delphi把短日期即00--99年都解释为1900--1999年, 而不受Windows控制面板中区域设置中格式的控制    //把年月日合成为日期值
        Datetime:=EncodeDate(Year,Month,Day);  
    end;---- 上 面 这 个 小 程 序 中,form1 的DateTimePicker1 的Dateformat 属 性 为dfLong,Datamode 的 属 性 为dmComboBox。 DateTimePicker1CloseUp 为 日 期 输 入 对 话 框 缩 起 时 发 生 的 事 件, 也 可 以 用OnChang 事 件, 即DateTimePicker 发 生 变 化 时 触 发, 则Datamode 属 性 无 论 取 何 值 都 可 使 用。 ---- 可 见 对DateTimePicker 控 件 只 要 稍 加 处 理 即 可 美 观 快 捷 地 解 决 日 期 输 入 问 题。, 默 许 状 态 下 日 期 只 能 在1752 年9 月14 日 至2999 年12 月31 日 之 间, 但 可 以 通 过 对 其mindate 和maxdate 赋 值 扩 大 选 择 范 围。 ---- 但 是 该 控 件 也 有 一 点 缺 憾, 对1899 年12 月30 日 以 前 的 数 值 录 入 须 小 心, 容 易 出 错。 这 倒 引 入 了 另 一 个 话 题, 即Delphi 中 的 日 期 型( 即Tdate 型 ) 的 定 义 为:type TDate = type TDateTime; 而TdateTime 型 的 定 义 为:type TDateTime = type Double; 可 见 日 期 型 归 根 到 底 是 双 精 度 浮 点 型(Double 型),Delphi 规 定 其 整 数 部 分 为1899 年12 月30 日 以 来 的 天 数, 小 数 部 分 则 为24 小 时 按 比 例 分 割 存 储, 例 如:
    0  12/30/1899 12:00 am        2.75 1/1/1900 6:00 pm
    -1.25  12/29/1899 6:00 am        35065 1/1/1996 12:00 am(12:00 am 即 为 凌 晨0 点,11:00 am 即 为 早 晨11 点,12:00 pm 即 为 中 午12 点,1:00 pm 即 为 中 午1 点) ---- 而 在Delphi1.0 中, 其 整 数 部 分 为 公 元1 年 以 来 的 天 数, 之 所 以 这 样 改 动 是 为 了 更 好 地 与OLE2.0 相 兼 容。 对 于 日 期 的 运 算 一 定 得 注 意 类 型 的 匹 配, 而 且 由 于 日 期 型 实 则 为Double 型, 所 以 可 对 其 进 行 加 减 乘 除 运 算, 现 举 例 如 下: 
    procedure TForm1.Table1CalcFields(DataSet: TDataset);
    var
        t1, t2: tDateTime; 
    begin
        table1d1.asDateTime := Date + 2;                {or table1d1.value := date + 2;} // Date为系统日期
        table1d2.asDateTime := Date - 2;   //d1,d2为表table1中date or dateTime型字段。
        t1 := table1d1.asDateTime;
        t2 := table1d2.asDateTime;   // trunc为取整函数,d3为表table1中integer型字段,结果为日期d1和d2的差。
        table1d3.asInteger := trunc(double(t1) - double(t2));
    end;---- 另 外, 在Delphi 中 可 以 方 便 地 显 示 系 统 时 间, 只 要 利 用DateToStr(Date) 及TimeToStr(Time) 函 数 即 可 实 现。 也 可 以 通 过 调 用WindowsAPI 函 数 来 实 现 对 系 统 时 间 的 设 置, 具 体 方 法 如 下: 
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        Edit1.Text:='1998-12-12 12:00 am';
    end;//可在运行时,也可在Edit1中重新键入日期, 但须注意格式。
    procedure TForm1.Button2Click(Sender: TObject);
    var
        systemtime:Tsystemtime;
        DateTime:TDateTime;
    begin
        DateTime:=StrToDateTime(Edit1.text);
        DateTimeToSystemTime(DateTime,systemtime);
        SetLocalTime(SystemTime);
        GetLocalTime(SystemTime);//读取北京东8区时间
        DateTime:=SystemTimeToDateTime(SystemTime);
        Edit2.Text:=DateTimeToStr(DateTime);
    end;
    //Button2点激后,系统时间就变为Edit1中的时间了。
    --------------------------------------------------------------------------------中国计算机世界出版服务公司版权所有 
      

  5.   

    即使这样,也不是我所想要的,我所想要的是在Edit中点击后,出现控件,供选择的那种!
      

  6.   

    Win32 页,DateTimePicker !!! 这个就是啦
      

  7.   

    fei19790920(饭桶的马甲) ,你也不要这么欺负楼主嘛!嘿嘿!
      

  8.   

    其实delphi7里有一个报表工具,Rave
    只不过不知道怎么的用的, 外语的界面看的我似懂非懂的,干脆是不懂得了!
    谁能帮我啊!
      

  9.   

    可以在delphi中用qreport啦,和以前的版本一样!