-PR-
締切り
済み

コントロール上でのポップアップメニューによる貼り付けを拒否したいのですが・・・・

  • 困ってます
  • 質問No.73987
  • 閲覧数321
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 87% (34/39)

こんにちわ。
現在VB6でソフト開発を行っており、テキストボックスへの入力制限について手動で制御しようとしています。
例えば、あるコントロールでは「半角数字の1~5のみを入力できるように」というような具合にです。

そのために、コントロールのKeyPressイベントで下記のようにコーディングしており、キーボードによる入力制限はこれで上手く制御できていますが、
他のアプリケーションでクリップボードにコピーした文字列を、このコントロール上でポップアップメニュー(マウスの右ボタンクリック)によって貼り付けをすると英数字でも貼り付けできてしまうのです。(Ctrl+Vは防げています)

Private Sub txtBin_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey1 To vbKey5 '数字のみ入力可
Case vbKeyBack
Case vbKeyReturn Or vbKeyTab
cmdSearch.SetFocus 'フォーカスの移動
Case Else
KeyAscii = 0
End Select
End Sub

これを回避する方法として考え付く方法またはそれ以外の方法で良い案が
あればどなたかご教授ください。

(1)アプリケーション全体においてクリップボード自体を使用不可にする方法

(2)独自に作ったポップアップメニューをアプリケーション全体に一括で設定する方法。(各コントロールのMouseDownで設定する方法は知っていますが、ひとつひとつ設定するにはあまりにコントロールの数が多いので。。。)

(3)文化オリエント社のInputManでマスクをする方法。

あとは思いつきませんが、上記の3つでもだめだよとか、そんなご意見があればお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 59% (729/1235)

changeイベントでtextプロパティに1~5以外の文字があればを削る
changeイベントでtextプロパティに1~5以外の文字があればを削る


  • 回答No.2
レベル12

ベストアンサー率 40% (230/562)

○Changeイベントで、文字の変化を見張り、新しい文章の中に不正な文字があったら抜く。 ただし、1文字打つごとに監視していたのではたまらないので、文字が複数増えたときだけを監視する。 ○タイマーコントロールで、キーを打ち終わった1秒後とかに、上記の動作をする。 ○右クリック禁止。 などなど。 独自メニューにしたければ、すべてのコントロールを配列にすれば、1つずつのコントロールではな ...続きを読む
○Changeイベントで、文字の変化を見張り、新しい文章の中に不正な文字があったら抜く。
ただし、1文字打つごとに監視していたのではたまらないので、文字が複数増えたときだけを監視する。

○タイマーコントロールで、キーを打ち終わった1秒後とかに、上記の動作をする。

○右クリック禁止。

などなど。
独自メニューにしたければ、すべてのコントロールを配列にすれば、1つずつのコントロールではなく、種類ごとのコントロールにMouseDownイベントを記述すればよくなります。

私は、2番目に挙げた方法が、かなり気に入っています。
打ち終わった数秒後に自動保存とか。
VBで文字列の制御をするのは、ちょっと難しいうえに、動作も遅くなるので注意してください。
お礼コメント
orange_pie

お礼率 87% (34/39)

みなさん、苦労しているんですねぇ。やはり。。。。
貴重なご意見ありがとうございました。

コントロール数が多くて、既に出来上がっているシステムなので、
大幅変更(各コントロールごとに手を加えるような)をしなくて済む
ような裏技をお持ちの方のさらなるご意見を引き続きお待ちしています。。。
投稿日時 - 2001-05-10 15:07:04
  • 回答No.3
レベル12

ベストアンサー率 40% (230/562)

VBの範囲から出てしまうのですが、ホットキーを使って、キーを制御したらどうでしょうか。 確かAPIでできたと思います。 修正できないほどの数のコントロールを1つのフォームにおくのはどうかと思いますが。 リストで代用したほうがいいですね。 バージョンアップするときは、その辺を考慮に入れることをお勧めします。 ...続きを読む
VBの範囲から出てしまうのですが、ホットキーを使って、キーを制御したらどうでしょうか。
確かAPIでできたと思います。

修正できないほどの数のコントロールを1つのフォームにおくのはどうかと思いますが。
リストで代用したほうがいいですね。
バージョンアップするときは、その辺を考慮に入れることをお勧めします。
お礼コメント
orange_pie

お礼率 87% (34/39)

なるほど。ホットキーという手もありますねぇ。。。
勉強がてらやってみます。
ありがとうございました。
投稿日時 - 2001-05-11 13:57:51
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ