DBDateTimeEditEh控件使用时,弹出日期选择框后,在文本输入框里面单击鼠标左键,日期会自动往前走,每单击一次日期就往前一天。

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls;type
      TForm1 = class(TForm)
        DateTimePicker1: TDateTimePicker;
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
         procedure mymessage(var Msg: TMsg; var Handled: Boolean);  end;var
      Form1: TForm1;implementationuses Types;{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      pt : TPoint;
      rt : TRect;
    begin
      if ssRight in Shift then
      begin
        if  GetCursorPos(pt) then
        begin
          rt := DateTimePicker1.BoundsRect;
          if  PtInRect(rt,pt) then      ShowMessage('ok')
        end;  end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := mymessage;
    end;procedure TForm1.mymessage(var Msg: TMsg; var Handled: Boolean);
    var
      pt : TPoint;
      spt : TSmallPoint;
      rt : TRect;
    begin
      if msg.message = WM_lBUTTONDOWN then
      begin
        if  GetCursorPos(pt) then
        begin
          GetWindowRect(DateTimePicker1.Handle,rt);
          if  PtInRect(rt,pt) then
          begin
            DateTimePicker1.DateTime := DateTimePicker1.DateTime+ 1;
          end;
        end;
      end;  inherited;
    end;end.
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls;type
      TForm1 = class(TForm)
        DateTimePicker1: TDateTimePicker;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
         procedure mymessage(var Msg: TMsg; var Handled: Boolean);  end;var
      Form1: TForm1;implementationuses Types;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := mymessage;
    end;procedure TForm1.mymessage(var Msg: TMsg; var Handled: Boolean);
    var
      pt : TPoint;
      spt : TSmallPoint;
      rt : TRect;
    begin
      if msg.message = WM_lBUTTONDOWN then
      begin
        if  GetCursorPos(pt) then
        begin
          GetWindowRect(DateTimePicker1.Handle,rt);
          if  PtInRect(rt,pt) then
          begin
            DateTimePicker1.DateTime := DateTimePicker1.DateTime+ 1;
          end;
        end;
      end;  inherited;
    end;end.
    用这个. 自己再判断下数据集的状态后再处理就OK了。
      

  3.   

    to starluck 不好意思,可能我没有把问题描述清楚。这里我重新描述一下我的问题:DBDateTimeEditEh控件使用时,弹出日期选择框后,在文本输入框里面单击鼠标左键,日期会自动往前走,每单击一次日期就会自动往前一天。现在我不希望他这样,就是在文本输入框里面单击鼠标左键时日期不要变化。
      

  4.   

    跳出日期選擇後當EXIT時,就會自動隱藏了日期選擇的界面,那麼當點擊的時候要不要讓它隱藏呢?? 或者說在什麼時候隱藏
      

  5.   

    是还没Exit时(那时日期选择界面还是显示的),点击文本输入框。