- - PR -
DateTimePickerコントロールの内部カーソルについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-24 22:28
VB.NETで日付入力にDateTimePickerコントロールを使用しようと考えています。
そこでひとつだけどうにもならないことがあります。 それは、コントロール内の「年・月・日」のカーソル移動をEnterキーで行う方法です。 標準では「←」や「→」で移動するのですが、 どうしてもEnterキーで移動させる方法が分かりません。 よい方法をご存知の方はお教え願えないでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2004-01-25 15:48
エンターキー(リターンキー)で項目が移動するのは端末時代のCUIの名残なんですね。WindowsではTABキーで項目間を移動するのが「作法」なので、そのように設計しないと「他のアプリケーションとの違いによるとまどい」が発生しますよ。
実際、私もあったんですね。客先の「システム担当」との打ち合わせで「みんなCUIになれてる年寄りなので、今更変えられない。だから、・・・」。強く推奨した(らしい)のですが、「システム担当」は譲らなかった。で、そのように作ると・・・まずは社内のレビューで文句が出る(製造者に言わず、設計者に言えよな)。それは「客先の要望だから」と乗り切ったが、納品後、実際に使用する人から「こんな使いにくいモノ、誰が使うんですか?!」・・・「システム担当」が思っている以上に現場はWindowsの操作になれていたようです。 ちなみに、「そういうご要望でしたので」というと、「さらによい方法があるなら、そうするのが仕事でしょ」と返されました。ごもっとも。。。 | ||||
|
投稿日時: 2004-01-25 18:57
Jittaさん、ご返答ありがとうございます。
おっしゃるとおり「TABで移動」が作法かもしれません。 ですが、「他のアプリケーションとの違いによるとまどい」というのは逆なのです。 といいますのは次のような理由からです。 今回の作業は、現在動いているVB6.0のAPをVB.NETへ移行するというものです。 その際の客先システム部の要望は、 ・できるだけ現行にあわせる (使用するユーザが現行のAPに慣れているため) ・経費削減 というものでした。 ですので、現在使用している外部OCXは自作するということになりました。 そこで日付入力の部品について検討している際に前回投稿させていただいたような 課題が出てきたというものです。 ですから、TABキーでの移動にすると、 「現行とオペレーションが異なるため、ユーザが戸惑う」 という問題が出てくるというわけです。 このような『保守的』なユーザにはとても苦労しますね。 結論としては、やはりEnterキーによる移動は無理なのでしょうか? もう一度TABキー移動を推してみますが、 もしEnterキー移動が実現できる方法をご存知ならばどなたかご教授お願いします。 | ||||
|
投稿日時: 2004-01-25 19:05
・・・
といいますか、TABキーでも内部移動はできないんですね。 BackSpaceやDelも使えそうにないし。。。 使えるのは↑、←、↓、→ぐらいなんでしょうか。。。 | ||||
|
投稿日時: 2004-01-26 08:29
大変ですね。でも、「発注部門」と「ユーザ部門」が違い、双方の意思疎通がされていない場合の方が、もっと大変です Form.KeyPreviewプロパティをtrueにすると、Enterキー(というか、全てのキー)のイベントをFormが先に受け取ります。ここで、フォーカスがどこにあるかを確認し、コントロールに対してWindowsMessage(Win32API)を送ってやれば、できるとは思います。 ##### というか、.NET Frameworkにキャレットの位置を制御するメソッドがない? がーん!!PlatformSDKでは「キャレット」なのに、.NET Frameworkでは「カレット」に名称変更されている!!検索に引っかからないわけだ。 | ||||
|
投稿日時: 2004-01-28 20:47
結果報告です。
DateTimePickerコントロールを提案してみましたが、 見事玉砕しました。 担当者いはく、 「CUIに慣れているユーザにはこのGUIでの操作は難しい」との判断でした。 若輩ものには、客先要望は絶対という空気は変えられませんでした、、、 自作でがんばります。 | ||||
|
投稿日時: 2004-01-29 09:42
ご愁傷様です。 DateTimePickerにまつわる、私の苦労話を1つ。 このコントロールは、Office97くらいで、Comcntrl32.dllにて導入されました。この頃、Borland C++ Builder 3が発売され、これの中で使えるようになりました。で、使ったのですが…一番最初だけ、カレンダーを表示させてカレンダー以外の場所をクリックするとアプリケーションが落ちる!ことを品質保証課に指摘されました。Borlandに問い合わせたところ、MSのコントロールだからうちでは直せん!仕方なくcomcntrl32.dllのバージョンを調べると、3つのバージョンを発見!!1つはBuilderでインストールされたもの、2つ目は一太郎でインストールされたもの、3つ目はOfficeでインストールされたものでした(自分ところの製品は最新かい!)。使っているのは一番古いものなので、最新では直っているかも・・・と、とりあえずバージョン2を使用してみる。やった、直っている。が、「コントロールにフォーカスがあるとき、日本語入力をすると落ちる」との連絡。で、バージョン3を使用。日本語入力の件は直っているが、カレンダー以外クリックの件が復活。やむなく自作。 DateTimePickerにまつわる、DLLヘルを実感した一件でした。 | ||||
|
投稿日時: 2004-01-29 12:13
横やりですみません。
DateTimePickerコントロールにまつわる苦労は、私もあります。 BackColorが設定出来ないと言う現象なのですが、VS.NET2002の時に発見して 試行錯誤していたのですが、どうもバグらしいです。VS.NET2003でもこの バグは、今現在、修正されていません。 おかげで、使うのをやめたプログラムもあります。 #基本的にVS.NETってバグはパッチじゃなくてバージョンアップで対応なのかなぁ >MS社員の人 |
1