!关于MonthCalendar的有关问题

紧急求助!关于MonthCalendar的问题。
在网上没找到答案,希望大家帮助,一有正确答案,马上结帖给高分,不再大面积散分。
我想单击MonthCalendar里的日期,然后加到DBEdit中,但单击其它地方,日期同样会加上去。
怎么判断单击的是日期,而不是上边那两个按钮或其它地方呢?
先谢谢大家!

------解决方案--------------------
这是D7写的一个简单示例,主要是重写MouseUp这个过程,捕捉鼠标的区域,在区域内获取日期,否则不获取。
Delphi(Pascal) code

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.

------解决方案--------------------
r := Rect(15,48,Left+Width,Top+Height);这个区域有点牵强了,如果分辨率不同,字体不同,就不对了

个人感觉,没必要纠结这个
------解决方案--------------------
Delphi7版本MonthCalendar,有BUG。当 DATAMode设置为模式dmUpDown时,每年的4月有10号,不能使用。
------解决方案--------------------
我也遇到同样的问题。我一般是尽量给客户自动输入一个日期,当需要修改日期时,调出这个控件,选好日期后双击输上去。就是说有问题的东西尽量少用,不过还是咱们水平低,否则改进一下可能就行。