A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
Private Sub Combo1_LostFocus()
If (IsMouseDown()) Then
Combo1.SetFocus
End If
End Sub
Private Function IsMouseDown() As Boolean
IsMouseDown = (GetKeyState(VK_LBUTTON) And &H80) Or (GetKeyState(VK_RBUTTON) And &H80)
End Function
No.7
- 回答日時:
コンボボックスのStyleプロパティによって、フックすべき場所が異なる。
Style=2なら、コンボボックスをフックするだけで、マウスイベントが拾えるが、2以外なら、コンボボックス内部にテキストボックスオブジェクトが創成される。
その内部オブジェクトのイベントも拾う必要がある。
下はマウスイベントの取得サンプル(for Style=2)
これフォームモジュールにはる
Option Explicit
Private Sub Form_Load()
Call setSubClass(Me.Combo1.hWnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call freeSubClass(Me.hWnd)
End Sub
これ標準モジュールにはる
Option Explicit
Private Const GWL_WNDPROC = (-4)
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private pPlocWnd As Long
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_LBUTTONDOWN
Form1.List1.AddItem "マウスダウン:" & Now
Case WM_LBUTTONUP
Form1.List1.AddItem "マウスアップ:" & Now
End Select
PGMEND:
WindowProc = CallWindowProc(pPlocWnd, hWnd, uMsg, wParam, lParam)
End Function
'サブクラス化
Public Function setSubClass(inWnd As Long) As Long
Call freeSubClass(inWnd)
pPlocWnd = SetWindowLong(inWnd, GWL_WNDPROC, AddressOf WindowProc)
End Function
'サブクラス化解除
Public Function freeSubClass(inWnd As Long) As Boolean
If pPlocWnd <> 0 Then
Call SetWindowLong(inWnd, GWL_WNDPROC, pPlocWnd)
pPlocWnd = 0
End If
freeSubClass = True
End Function
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=561476
No.5
- 回答日時:
#2です。
>現行のCOBOLはオフコンで動いています。
>項目の移動をすべてハードタブまたは確定キーで移動しており、
>当然ながらマウスは使用していません。
これを忠実にシミュレートして、
マウスをハード的につながなければ良いのでは・・・。
そういう問題じゃないですね。
すいません。
No.4
- 回答日時:
答えられそうもないですが、見た人が問題自身を理解できるのかとおもいまして。
>動きを少しでも忠実に再現して欲しいという要望
どういうケースでしょうか。
>マウスクリックでフォーカスを移したくないということです。
どういう弊害があるのでしょうか。
入力禁止と言うことではないでしょうね。
>EnableをFalseにすることも考えたのですが、それでは工数がかかりすぎるとのことで却下されてしまいました。
プログラム工数がそんなになぜ増えるのでしょうか。
>COBOL言語でのオペレーションをそのまま引き継げません(#3のご回答の一部)
これで苦労されているのですか。
客先の現在のCOBOL言語でのオペレーションはどういう風のものですか。
この回答への補足
ありがとうございます。
>COBOLのオペレーション
現行のCOBOLはオフコンで動いています。
項目の移動をすべてハードタブまたは確定キーで移動しており、当然ながらマウスは使用していません。
マウスを使ってコントロール間の移動をさせたくないということです。
>弊害
確定時の入力チェックを強化すれば良いだけの話なので特にはあげられないのですが・・・・・。
>プログラム工数がそんなになぜ増えるのでしょうか。
実はこの動作をさせたいPGは350本あり、このオペレーション以外の部分では既に出来上がっています。納期もかなり近づいていますのでもう少し共通的に簡単にできないものかということでした。
このような補足でよろしいでしょうか?
No.3
- 回答日時:
なるほど、そうでしたか。
でも残念ながら、COBOLはノイマン型の逐次実行タイプの言語です。
引き換えVBは、イベントドブリンタイプになります。よってCOBOL言語でのオペレーションをそのまま引き継げません。というか言語仕様的にムリです。
ここは、お客様とのご相談になると思います。もしオペレーション的にCOBOL言語と同等に使用したいのであれば、前述した様にEnableを操作するしかないです。
コストを優先させるのであれば、操作系は変わらざるを得ません。つまり明細を入力して、登録ボタンを押したときに入力漏れや入力相関のチェックが動作して、完全にならないと登録できないようにするとかですね。
方法としたらこんなものです。言語仕様が違いすぎます。
PAPA0427さま
アドバイスありがとうございます。
やはりそうですよね・・・・。
私もVB暦長いですがここまでこだわられるお客様も始めてなので正直戸惑っています。
もう少しがんばって上司、お客さまを説得してみます。
No.2
- 回答日時:
tomotomo0906さん、こんにちは。
ちょっとよくわからないのですが、
そのコントロールの種類は、コンボボックスですか?
>マウスで移動させたくないコントロールがありどのようにしたらよいか
「マウスで移動させたくない」というのは、
マウスクリックでフォーカスを移したくないということなんでしょうか。
(つまり、タブキーでのフォーカスを移すのは許可するということ?)
・・・それとも、コントロールをユーザーが
ドラッグ操作で移動できる仕様にしているのでしょうか。
この回答への補足
ありがとうございます。
言葉が足らず申し訳ありません
マウスクリックでフォーカスを移したくないということです。
移動させたくないコントロールはテキストボックスとコンボボックスです。
よろしくお願いします。
No.1
- 回答日時:
う~~~ん。
難しいですね。はじめからマウスを使うのが前提になっている言語仕様ですからね。マウスでの移動をさせたくないという所を詳しく教えていただけないですか?
入力必須項目であれば、その項目が入力されないうちは全ての項目のEnableをFalseにしておくとか…。
この回答への補足
ありがとうございます。
今行っている作業がCOBOLプログラムをVB化という作業をしています。
動きを少しでも忠実に再現して欲しいという要望がでているのです。
ですのでマウスで移動させたくないということみたいです。
EnableをFalseにすることも考えたのですが、それでは工数がかかりすぎるとのことで却下されてしまいました。
マウス移動させたくない場所は 明細入力をする部分になります。
コンボボックスが1つテキストボックスが3つ並んで1行で、
それが10行分となります。
こんな情報でよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ActiveXコントロールのコマンドボタン移動させようとすると消える 1 2022/04/26 22:29
- その他(自然科学) 世界中の最新科学技術でも、まだまだ雨雲や前線を移動させてコントロールする事は出来ないのでしょうか? 2 2023/07/10 12:44
- 超常現象・オカルト 明晰夢を見るときに困っていることが2つあります。 ①見たい夢を意識してそのまま夢の世界へ移行するとき 1 2022/11/26 14:54
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
- 物理学 相対性理論の嘘について 10 2022/07/29 08:28
- 呼吸器・消化器・循環器の病気 心筋梗塞の発作って薬でコレステロールの値をコントロールしても起こりえますか うちの親の話で、体重は相 7 2022/12/27 20:20
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- セキュリティホール・脆弱性 論理的アクセス・コントロールに関する問題で悩んでいます 1 2022/10/08 08:42
- 超常現象・オカルト 明晰夢で思い通りに夢を操れる? 3 2022/07/01 17:37
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キーイベントを擬似的に発生さ...
-
一定時間操作されないと自動で...
-
VB.NETのDropDownListをReadOnl...
-
SelectionChangeCommitted
-
VC++ で TextBoxから、次...
-
ショートカットキーの変更をしたい
-
Excel2007にてALTキーストロー...
-
VB.NETでフォームがない...
-
【VB】タブ切り替え時のイベント
-
複数のテキストボックスのカン...
-
KEYPREVIEW=TRUEについて。意味...
-
Visual Basic 6.0 コンボボック...
-
Delphiでキー入力を投げたい
-
テキストボックスの入力文字を1...
-
エクセルVBAのテキストボック、...
-
TextboxまたはMaskEditboxでの...
-
(VBA)チェックボックスのclick...
-
「ご処理進めて頂きますようお...
-
VBA SaveChanges 上書きされない
-
Pythonでgif画像が上手く作れない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
タブキー押下時のイベントをひ...
-
特定のキーを押すまでループさ...
-
(VBA)チェックボックスのclick...
-
WPFでの時刻入力コントロールに...
-
Visual Basic 6.0 コンボボック...
-
一定時間操作されないと自動で...
-
コンボボックスにキー入力をさ...
-
Excel VBA マクロ実行中のみテンキ...
-
VB.NETのDropDownListをReadOnl...
-
フォーカスについてお教えください
-
キーイベントを擬似的に発生さ...
-
IEで、BackSpaceで「戻る」機能...
-
エクセルVBAのテキストボック、...
-
VB.NETでフォームがない...
-
KEYPREVIEW=TRUEについて。意味...
-
EXCEL VBA でIEを制御して、INP...
-
自作ダイアログボックス中のエ...
-
テキストボックスの入力文字を1...
-
Objective-Cでキーボードイベン...
おすすめ情報