现在datetimepicker在获得焦点的时候自动定位到年份上,
那么如何才能让datetimepicker在获得焦点的时候自动定位到日期呢?这样方面数字输入。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     DateTimePicker1.SetFocus;
    end;
      

  2.   

    定位到日上
       DateTimePicker1.SetFocus;
       SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,39,0)
      

  3.   

    定位到日的是
       DateTimePicker1.SetFocus;
       SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,39,0);
       SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,39,0)原理就是先把焦点移动到DateTimePicker1,然后发送消息WM_KEYDOWN
      

  4.   

    DateTimePicker1.SetFocus;   SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,VK_RIGHT,0);
       SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,VK_RIGHT,0)39是VK_RIGHT的虚拟键值。。通用的,就用上面这个,程序容易理解,就是把焦点移动到dataetimepicker上后,模拟光标vk_right被按下。
      

  5.   

    Delphi帮助里的虚拟键值表:
    VK_RIGHT Right Arrow key
    VK_DOWN Down Arrow key
    VK_SELECT Select key
    VK_PRINT Print key (keyboard-specific)
    VK_EXECUTE Execute key
    VK_SNAPSHOT Print Screen key
    VK_INSERT Insert key
    VK_DELETE Delete key
    VK_HELP Help keyVK_LWIN Left Windows key (Microsoft keyboard)
    VK_RWIN Right Windows key (Microsoft keyboard)
    VK_APPS Applications key (Microsoft keyboard)
    VK_NUMPAD0 0 key (numeric keypad)
    VK_NUMPAD1 1 key (numeric keypad)
    VK_NUMPAD2 2 key (numeric keypad)
    VK_NUMPAD3 3 key (numeric keypad)
    VK_NUMPAD4 4 key (numeric keypad)
    VK_NUMPAD5 5 key (numeric keypad)
    VK_NUMPAD6 6 key (numeric keypad)
    VK_NUMPAD7 7 key (numeric keypad)
    VK_NUMPAD8 8 key (numeric keypad)
    VK_NUMPAD9 9 key (numeric keypad)VK_MULTIPLY Multiply key (numeric keypad)
    VK_ADD Add key (numeric keypad)
    VK_SEPARATOR Separator key (numeric keypad)
    VK_SUBTRACT Subtract key (numeric keypad)
    VK_DECIMAL Decimal key (numeric keypad)
    VK_DIVIDE Divide key (numeric keypad)
    VK_F1 F1 key
    VK_F2 F2 key
    VK_F3 F3 key
    VK_F4 F4 key
    VK_F5 F5 key
    VK_F6 F6 key
    VK_F7 F7 key
    VK_F8 F8 key
    VK_F9 F9 key
    VK_F10 F10 key
    VK_F11 F11 key
    VK_F12 F12 key
    VK_F13 F13 key
    VK_F14 F14 key
    VK_F15 F15 keyVK_F16 F16 key
    VK_F17 F17 key
    VK_F18 F18 key
    VK_F19 F19 key
    VK_F20 F20 key
    VK_F21 F21 key
    VK_F22 F22 key
    VK_F23 F23 key
    VK_F24 F24 key
    VK_NUMLOCK Num Lock key
    VK_SCROLL Scroll Lock key
    VK_LSHIFT Left Shift key (only used with GetAsyncKeyState and GetKeyState)
    VK_RSHIFT Right Shift key (only used with GetAsyncKeyState an 
      

  6.   

    谢谢wudi_1982的精彩作答!
    问题时,下次到这个位置的时候,DateTimePicker1会默认到焦点日上
    这个时候就不能再发送SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,VK_RIGHT,0);
    了,那么如何解决呢???
      

  7.   

    DateTimePicker1.SetFocus;
      SendMessage(DateTimePicker1.Handle,WM_KEYDOWN,VK_LEFT,0);