如何通过点击界面上Button来让DateTimePicker的下拉框弹出?

解决方案 »

  1.   

    SendMessage(DateTimePicker.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0)
      

  2.   

    juliens(星星球)你的方法我没试起来啊
      

  3.   

    juliens(星星球)的方法是个DateTimePicker本身发消息。而不是给DateTimePicker上的下拉按钮发消息
      

  4.   

    SendMessage(DateTimePicker.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0)
    这个方法不会错的,你在试试
      

  5.   

    juliens(星星球) 的方法不行,我试过了,
    应该是SendMessage(DateTimePicker1.Handle,WM_SYSKEYDOWN,VK_DOWN,0);
    这个就对了!!
      

  6.   

    procedure TForm1.DateTimePicker1Enter(Sender: TObject);
    begin
       keybd_event(VK_LMENU, 0, 0, 0);
       keybd_event(VK_DOWN, 0, 0, 0);
       keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
       keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);
    end;
      

  7.   

    procedure push_down(contr:TDateTimePicker );
    var
    msg: tagEVENTMSG;
    begin
    msg.message:= WM_LBUTTONDOWN;
    msg.paramL:=contr.Height div 2;
    msg.paramH:= contr.Width - 5;
    msg.hwnd:=contr.Handle;
    contr.DefaultHandler(msg);
    msg.message:=WM_LBUTTONUP;
    contr.DefaultHandler(msg);
    sleep(1);if contr.DroppedDown then
    begin
    contr.SetFocus;
    msg.message:= WM_LBUTTONDOWN;
    msg.paramL:= 5;
    msg.paramH:= 5;
    msg.hwnd:=contr.Handle;
    contr.DefaultHandler(msg);
    msg.message:=WM_LBUTTONUP;
    contr.DefaultHandler(msg);
    contr.SetFocus;
    end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     push_down(DateTimePicker1);
    end;
      

  8.   

    终于看懂如何发消息了--顶一下
    SendMessage(DateTimePicker.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0)
    WM_LBUTTONDOWN, MK_LBUTTON说没定义怎么定义噢
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      w : Integer;
      X, Y : Word;
    begin
      x := DateTimePicker1.Width -10;
      y := 10;
      w := (Y shl 16) or x;
      SendMessage(DateTimePicker1.Handle,WM_LBUTTONDOWN,0,w);
    end;
      

  10.   

    extcsdn(Studing VB now)的好。
      

  11.   

    juliens(星星球) 的方法不行,我试过了,
    应该是SendMessage(DateTimePicker1.Handle,WM_SYSKEYDOWN,VK_DOWN,0);
    这个就对了!!
    ------------------------------------------------------------------
    你這也好意思說是別人的不行??????????
      

  12.   

    postmessage(DateTimePicker1.handle, WM_LBUTTONDOWN, 1, ((DateTimePicker1.Height div 2) shl 16) + (DateTimePicker1.WIdth - 12));
      postmessage(DateTimePicker1.handle, WM_LBUTTONUP, 1, ((DateTimePicker1.Height div 2) shl 16) + (DateTimePicker1.WIdth - 12));
      

  13.   

    popmailzjw(一万吨爱)同志,有什么不对吗?
      

  14.   

    用我的
    procedure push_down(contr:TDateTimePicker ); 方法試下再說吧
      

  15.   

    aiirii(ari-爱的眼睛) 大大的方法可行,不过如果不把procedure TForm1.DateTimePicker1Enter(Sender: TObject);
    begin
       keybd_event(VK_LMENU, 0, 0, 0);
       keybd_event(VK_DOWN, 0, 0, 0);
       keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
       keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);
    end;
    加入进入时,再次打开窗口时会出错的!extcsdn(Studing VB now) 这位兄弟的,能显示出来,但是再次打开窗口时会出错!
      

  16.   

    aiirii(ari-爱的眼睛)大大能否解释一下你的代码。
      

  17.   

    aiirii(ari-爱的眼睛)的 代码 就是模拟按“alt + ↓”啊。