TDateTimePickerのドロップとクローズについて

解決


smy  2003-07-01 22:14:10  No: 3983  IP: [192.*.*.*]

はじめまして、smymsと申します。
過去ログを探したのですが、見あたらなかったので、投稿します。

TDateTimePickerでKindプロパティがdtkDate、DateModeプロパティが
dmComboBoxのときになのですが、実現したい動作は下記の通りです。

①TDateTimePickerにフォーカスセットでカレンダーをドロップダウン
②そのまま変更せずにENTER押下で、カレンダーをクローズ


②は何もしなければ、その通りの動作をするのですが、
過去ログを参考にさせて頂いて下記のコーディングを行ったところ、
①はOKなのですが、②が出来なくなりました。

procedure TDateTimePicker1Enter(Sender: TObject);
begin
  SendKeys('%{DOWN}',True);
end;

両方を実現するには、上記のコーディングは適さないのでしょうか?
どなたかご教授下さい。
宜しくお願いします。

編集    削除
にしの  2003-07-02 01:48:55  No: 3984  IP: [192.*.*.*]

SendKeysを使わずに、

  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);

ではどうでしょう。

編集    削除
smyms  2003-07-02 02:59:39  No: 3985  IP: [192.*.*.*]

smymsです。

>SendKeysを使わずに、
>
>  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);
>
>ではどうでしょう。

ありがとうございました。
上記のコーディングで上手くゆきました。

そこでもう一点ご質問です。

ENTER押下でカレンダーをクローズしたと同時に、次のコントロールにフォーカス
を移動する事は可能ででしょうか?

他のコントールでは、FormKeyPressイベントでENTER押下の場合、
下記で次コントロールにフォーカスを移動しています。

FindNextControl(Form1.ActiveControl, True, True, False).SetFocus

現在でも、ENTER押下でカレンダーをクローズした後、
再度ENTER押下でフォーカスは移りますが、クローズと同時というのは
難しいでしょうか?

編集    削除
Halbow  2003-07-02 03:37:30  No: 3986  IP: [192.*.*.*]

Halbow です。

TDateTimePicker には OnCloseUp イベントがあるのですが
今の場合は使えないんでしょうか?

編集    削除
smyms  2003-07-02 18:10:21  No: 3987  IP: [192.*.*.*]

>TDateTimePicker には OnCloseUp イベントがあるのですが
>今の場合は使えないんでしょうか?

おっしゃる通りでございました・・・
無知ですみません・・・
ありがとう御座いました。

編集    削除