• ベストアンサー

VB5でTextBoxを入力不可能にする方法は?

VisualBasic5で開発を行っているのですが、TextBoxの入力を不可能にする(入力カーソルもそこに移動できない)必要が出てきました。 もちろんEnabledプロパティをFalseにする方法があるのですが、この場合文字の色がグレーに変わってしまいます。 また、Labelを使用するパターンも「入力出来たり、入力不可にする」という取り決めがあるので、使えません。 TextBox内の文字色(BackColorも)をそのままにして、入力を拒絶する方法があれば、どなたか教えてください。 もちろんAPIを使用する方法でもかまいませんので…

  • fdh26
  • お礼率92% (106/115)

質問者が選んだベストアンサー

  • ベストアンサー
  • omitom
  • ベストアンサー率100% (2/2)
回答No.2

確かにTextBoxのEnabledプロパティではFalseに設定した場合に薄れて見づらくなりますね。 標準ToolBoxの中にFrameオブジェクトというものがありますがご存知でしょうか? このFrameオブジェクトの上にTextBoxを配置し、 入力の可否をTextBoxのプロパティでは無くFrameのプロパティで行ってみて下さい。 入力は出来なくなり文字の色も変化しませんよ。

fdh26
質問者

お礼

なるほどです!Frameを使ってOptionButtonのグループ分けをして、Frameごと設定不可にしたことはあるのに、この方法は全く思い付きませんでした。私も頭が固すぎます。今後ともよろしくお願いいたします。

その他の回答 (2)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

ピクチャーコントロールやフレームコントロール等のコンテナコントロールの上に子コントロールとしてテキストボックスを貼りつけ、テキストボックスではなく、コンテナ側の Enabled を False にすれば、文字色は単色表示されずに入力不可にすることができます。 BorderStyleをなしにすればコンテナの上に載ってるとは見た目上見えません。 また、複数のテキストボックスをまとめて入力不可にするときは、1つのコンテナに複数のテキストボックスを配置すれば、リソースの節約もできOKです。 他に、TabStop = False にして、Lockedプロパティを使用する方法もありますが、それだとTab移動ではフォーカスはとばされますが、クリックではフォーカスを得てしまいますね。

fdh26
質問者

お礼

早速の御回答ありがとうございます。私もTabStopを使って、クリックでのフォーカスの移動は半ば強制的に以前の場所に戻すようにしてたのですが、このような簡単な方法があるとは"目から鱗"状態です。大変役立ちました。ありがとうございました。

  • yoshioz
  • ベストアンサー率28% (10/35)
回答No.1

TextBoxをFrameの上に置いてFrameのEnabledプロパティを 変更してはいかがですか?

fdh26
質問者

お礼

なるほど、目から鱗! コロンブスの卵です。 やってみると快適快適! 分厚いAPIの本を読みながら試行錯誤していた日々が空しく思えます。 早速使ってみます!

関連するQ&A

  • VB2008 textbox入力判断について

    こんばんは、いつもお世話になりました。 VB2008で "ストップワォッチ"と"タイムダウン"のプログラムを作っています。 要望: 1 TextBox1.textが入力しない時、ストップワォッチを実行 (OK) 2 TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 (OK) 3 TextBox1.textの値をクリアされた時、再度ストップワォッチを実行 4 TextBox1.textに文字列入力された時、数字に変更してから タイムダウンを実行 (例:全角12:56 →12:56) 5 TextBox1.textが入力エラーの場合は プログラムを抜け、何もしないこと 下記のソースでしたら、3と4,5はまだできていません。 宜しくお願いします。 ---------------------------------------------------- 'TextBox1.textが入力しない時、ストップワォッチを実行 If TextBox1.Modified = False Then Timer1.Enabled = True datStart = Now() Me.Button1.Enabled = False Me.Button3.Enabled = False End If 'TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 If TextBox1.Modified = True Then dTime = TextBox1.Text Timer2.Interval = 1000 Timer2.Enabled = True End If 'TextBox1.textの値を再度クリアされた時、ストップワォッチを実行 If Len(TextBox1.Text) = 0 Then TextBox1.Modified = False End If -------------------------------------------------------------- 以上

  • Access2007 textboxに入力できない。

    Access2007 textboxに入力できない。 非連結のフォーム上に、非連結のテキストボックスを張り付けたのですが、入力ができずに困っています。 カーソルは来ていて、試しにVBAで値を入れてみると表示はされるのですが、プロテクトが掛っているように、入力ができません。 テキストボックスの Enabled=true Locked=false になっています。 どのあたりを見ればよいのかもわからず、苦慮しております。 よろしくお願いいたします。

  • VBで、TextBoxの反転色を変更したい

    http://uploader.sakura.ne.jp/src/up82760.png TextBoxでテキストを選択すると 色が反転してグレーになりますが、この色を変更したいのです。 TextBox1.ForeColorや、TextBox1.BackColorでは TextBoxそのものの背景色や、文字色は変更出来ますが 選択している文字の反転色は変更できません。 どのようにすればいいのでしょうか?

  • TextBoxの入力規制

    お世話になります。VB2005での質問です。 VB6.0の時は、Frameの上にTextBoxを貼り付け、そのFrameのEnableをTrueにしたりFalseにしたりして、入力の規制をかけていました。 そうすると、TextBoxの外観を変えずに規制をかけることができましたし、入力項目のいくつかをひとつのFrameに乗せておけば、一度に全体を規制することができました。Frameもラインを消すことができましたので、見た目もきれいにできていたのですが、VB2005にはそのFrameがないようですが、同じような機能を持ったコントロールはないでしょうか。 GroupBoxを使用した場合、そのBoxのEnableをFalseにすると、上に乗せたTextBoxの色がグレーに変わってしまいますし、GroupBoxにはプロパティにBorderStyleが見当たらず、ラインを消す方法もわかりません。 とても困っています。よろしくお願いいたします。

  • vb6のTEXTBOX

    教えて下さい。 vb6の環境下でTextbox、もしくはLabelのでそれに表示させる文字位置を枠内のセンターに持っていきたいのですが、その方法を教えて下さい。 横方向はプロパティ-でセンターに持っていけるのですが。縦方向がわかりません。教えて下さい。

  • VBA TextBox の文字数制限方法について。

    TextBox1 に入力された文字数が指定した文字数以外だったときは、 入力された値を削除して、再びTextBox1 にカーソルを持っていく 方法ってありますか? バーコードをTextBoxに入力する際に、違うバーコード(文字数が異なる)を読んでしまったときの対処方法で上記の様な事ができればと思っています。よろしくお願いします。

  • VB Windowsアプリ TextBoxについて

    Visual BasicでWindowsフォームアプリケーションを作っています。 下記のようなフォームがあり, ・1つのフォームにTextBoxとButtonが1つずつある ・TextBoxのTextは空 ・ButtonのTextは"abc" 下記のような動作をさせたいです。 ・Buttonをクリックすると,TextBoxにabcが追加で入力される ただし,AppendTextメソッドを使って文字列の末尾に入力するのではなく, ・入力カーソルが文字列の途中にあれば,そこにabcが入力される ・一部の文字列が選択されていれば,その文字をabcに置き換える のような,直接キーボードからabcを入力するときと同じような動作をしてほしいのです。 分かりにくいかもしれませんが,どのようにすれば実現できるか教えてください。

  • TEXTBOXの改行について

    1. TEXTBOXは2行分とってある。 全角60文字の入力を認め、1行は30文字である。 2. TEXTBOXに改行の入力は認めない(MULTILINEだっけかをFALSEにする) という条件で、30文字入力したら、自動で2行目に入力させたい。 って事をさせたいのだが、どうしていいか分かりません おしえてください。

  • VB2005 TextBoxに何も入力しない場合のエラー

    VB入門者なので、よろしくお願いします。 VB2005で、Textboxに何も文字を入力しないで Button1をクリックしたら、  MessageBox.Show("何か入力してください", "エラーメッセージ") の様に何かエラーメッセージが表示されるようにしたいのですが、何かいい方法はありますか? ちなみにTextboxに入力するものは、ひらがな、数字、漢字、ローマ字 なんでも入力できるようにしています。

  • Excel VBA テキストボックスの入力を使用不可にした場合

    Excel VBA テキストボックスの入力のプロパティのEnabledをFalseにする使用不可になるのですが、グレーで薄くなってしまい見にくいのですが、何か良い方法はないでしょうか? 黒文字にしたいのですが・・・。 よろしくお願い致します。

専門家に質問してみよう