紧急求助!关于MonthCalendar的问题。

wjs_002 2012-04-24 10:09:26
在网上没找到答案,希望大家帮助,一有正确答案,马上结帖给高分,不再大面积散分。
我想单击MonthCalendar里的日期,然后加到DBEdit中,但单击其它地方,日期同样会加上去。
怎么判断单击的是日期,而不是上边那两个按钮或其它地方呢?
先谢谢大家!
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjs_002 2012-04-27
  • 打赏
  • 举报
回复
虽然没有满意答案,但还是结帖给分。
jiahui002 2012-04-27
  • 打赏
  • 举报
回复
我也遇到同样的问题。我一般是尽量给客户自动输入一个日期,当需要修改日期时,调出这个控件,选好日期后双击输上去。就是说有问题的东西尽量少用,不过还是咱们水平低,否则改进一下可能就行。
lyhoo163 2012-04-26
  • 打赏
  • 举报
回复
Delphi7版本MonthCalendar,有BUG。当 DATAMode设置为模式dmUpDown时,每年的4月有10号,不能使用。
wjs_002 2012-04-26
  • 打赏
  • 举报
回复
顶上去,继续求教。
wjs_002 2012-04-24
  • 打赏
  • 举报
回复
感谢上面两位,难道没有更好、更靠谱的方法?
实在不行,我就用双击的方法。
bdmh 2012-04-24
  • 打赏
  • 举报
回复
r := Rect(15,48,Left+Width,Top+Height);这个区域有点牵强了,如果分辨率不同,字体不同,就不对了

个人感觉,没必要纠结这个
Jekhn 2012-04-24
  • 打赏
  • 举报
回复
这是D7写的一个简单示例,主要是重写MouseUp这个过程,捕捉鼠标的区域,在区域内获取日期,否则不获取。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type

TMonthCalendar = class(ComCtrls.TMonthCalendar)
protected
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
end;

TForm1 = class(TForm)
Edit1: TEdit;
MonthCalendar1: TMonthCalendar;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TMonthCalendar.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited;
Form1.Caption := Format('X:%d,Y:%d',[X,Y]);
end;

procedure TMonthCalendar.MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var
r: TRect;
begin
inherited;
with Form1.MonthCalendar1 do
r := Rect(15,48,Left+Width,Top+Height);
if PtInRect(r,Point(X,Y)) then
Form1.Edit1.Text := FormatDateTime('yyyy-mm-dd',Form1.MonthCalendar1.Date);
end;

end.

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧