新宿ナチュラルハイ -Shinjuku Natural High- -5ページ目

新宿ナチュラルハイ -Shinjuku Natural High-

新宿、歌舞伎町を中心として都内の飲み屋さんの紹介や、旅行の話を書いてます。詳しくは目次からどうぞ

モードレスでダイアログ(フォーム)を作った時の動作について
変な挙動のおかげでハマったので、その忘備録として。

環境はExcel2003



問題となる手順は以下のとおり

1)
モードレスで作ったフォーム上にあるテキストボックスにフォーカスをあてる
(カーソルキーをあてて、文字を入力できる状態にする)

2)
別のウィンドウ(アプリケーション)に移動して、再度Excelに戻ってくる

3)
テキストボックスのカーソルキーの表示がなくなる。



この時、Ctrl+C や Enterキーなどは効くので、フォーカス自体は
テキストボックスに存在すると思われるのだが、キー入力は不可。

やっかいなことに、Msgboxなどで子ウィンドウを生成して
戻ってきた場合にも、この現象は発生する。

フォームがアクティブになった時のイベント取得用に
Activateが用意されているので、ここで
SetFocusを読んであげればいいんだ、と思っていたら

ハマった





どうやらUserFormのActiveteがうまく機能していない様子。



この辺の記事 を参考にさせてもらいました。
バージョンによって動作が違うとは、なんとやっかいな



さらにこのSetFocusにも問題が、、、




例えば、UserForm上のどこかをクリックしたときに
テキストボックスにフォーカスを移そうと、
SetForcusを使ってみても、
期待通りの動作にはならない。


こんな感じで、いったん別なコントロールに対して
SetFocusを呼んであげたあと、本命のテキストボックスに対して
SetFocusを呼ぶとうまくいく。

-------------------------------------------------
Private Sub UserForm_Click()

    CommandButton.SetFocus
    TextBox.SetFocus

End Sub
-------------------------------------------------

なんだコレって感じだなぁ、、、、




ただ、この回避策でも、
結局、タスクバーでExcelを選んだり、
Alt+Tabでウィンドを切り替えたりした場合は
当然、テキストボックスにフォーカスは移らない。


アクティブウィンドウのイベントがトラップできない以上
結局何をやってもダメ

本当の解決策は
Win32API使うか、モーダルで仕様を満足させるか、かな~

しかし、イベントドリブン型のプログラムで、
イベントハンドリングにバージョンごとの違いが存在するって
困った話だよ、ホント


だから
マイク○ソフトのアホめ!
って思うんだよな~(しみじみ)
もう、慣れたけど



P.S.
今回の件で、いろいろ調べるまで、モードレスのことを
ずっと、モーダレスだと思っていました。




ペタしてね

愛用しているDELLのU2711

単体で2560×1440(WQHD)という解像度を誇る
PC用液晶モニタです。

これがなんと!

2台

新宿ナチュラルハイ -Shinjuku Natural High--u2711

大きさ比較用にメガネをおいてます。
その大きさがお分かりいただけたでしょうか?

iPhoneのカメラの青カビっぷりも
確認できますがw

なんと!!

総解像度は
5120×1440

ヽ(゜▽、゜)ノ スゲェ



実は、片方は不良品で、
その交換用として新しいディスプレイが
送られてきたときに、撮ったものです。

なので、2台所有しているわけではありません。
というか、そんなグラボも持っていません!!
(そもそも存在するの??)

MacbookProで使用しているので、
このディスプレイとMac本体のデュアルディスプレイ
環境も出来ますが、そこまでの解像度を
必要とする場面があまりなく、
なにより、体感的に描画が遅くなる感じがします。
なので、あまり2画面では使ってません。


U2711自体はWQHDで27インチ
ということもあり、ドットピッチは0.23mmと
文字は小さめになります。

また、「ギラツブ液晶」と言われるように、
多少ギラツブ感もあります。

しかし、それらを補う価格設定が
この商品の魅力だと思ってます。

16:9 という部分も人によっては気になる人も
いると思いますが、この大きさのディスプレイだと
あまり、縦方向の高さがあると、
首の上下運動が多くなり、逆に疲れるのでは
ないかと思います。
その点、この機種はちょうどいい高さに収まります。

それでも、縦書きのPDFやWordの編集など、
1ページ分が画面全体に読める大きさで表示されるのは
視認性が上がって大変便利です。


最近は1,2万円でフルHDの液晶モニタが
手に入ることから、あまりオススメとも
言えませんが、一回この解像度の液晶モニタを
使ってしまうと、低い解像度のモニタには
戻れなくなりますよー(笑)




ペタしてね