テキストボックスに、'1'って数字を入力したら、頭に'1'がつく入力候補がテキストボックスの下にリスト形式で表示され、
続けて、'2'と入力すれば、入力候補リスト内は頭に'12'がつく入力候補にかわる。
わかりやすく(?)言うと、例えば、VB6で変数の宣言をするとき Dim xxx As まで書くと入力候補のリストがカーソルの下に表示されますよね。
続けて、Dim xxx As S と入力すると、入力候補が 'S' から始まるものになりますよね。
まさに、コレがやりたいんです!!

何かいい方法、いいツールetc・・・、知っている方がいらっしゃったらぜひ教えてください。
ちなみに、開発はVB6で行います。
よろしくお願いします!!!

A 回答 (1件)

コンボボックスで似たような挙動をさせようと思えば、


やってやれんことは無いはず。
(あくまで方向性であって、VBの仕様でできないかも・・・)

候補データが配列に格納されているとして、
該当するデータを決定するには、Like演算子を使用します。
例)
コンボボックスのKeyUpイベントに置いてください。
Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim dintJ As Integer
Dim dstrPool As String

'値を保存しておきます
dstrPool = Combo1.Text
'データを消去します
Combo1.Clear

'入力データを頭から含むデータのみを再セットします
For dintJ = 0 To 49
 If PoolData(dintJ) Like Trim$(dstrPool) & "*" Then
   Combo1.AddItem PoolData(dintJ)
 End If
Next

'リストを表示します。
SendKeys "{F4}"

end sub

ただし、これだけだとまずまともに動かんでしょう・・・^^;
最低でも、Enter等のKeyCodeは受け付けないようにしないといかんわね。
なんか挙動不審だし・・・・

今テストしてみたら、なぜか、SendKeyメソッドの影響で、
「NumLock」ボタンを押しつづけてる永久ループに入ってしまった・・(**)。

ちょっと、今日忙しいので、また後日にでもテスト結果とサンプルを乗せますね。

もしくは、どなたかフォローを・・・  (無責任な・・・(-"-))

あ、あとComboBoxの「▼」が気に入らん場合は、上にTextでも張って消しといてください。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
私もoribeyakiさんが書いて下さっているソースを真似して
いろいろやってみてはいるのですが、なかなかうまくいきません。
また、テスト結果とサンプルを載せてくださるということなので・・・。
本当にありがとうございます。助かります!
忙しくないとき、またよろしくお願いします。

お礼日時:2001/09/18 09:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qノートパソコン本体のキーボード入力がおかしい。

日立 FLORA 270W PC8NB2を貰ったのですが、キーボードの配列がおかしかったり、入力できなくなったりします。マウスは普通に動くし、キーボードを外付けでつないでもちゃんと入力できます。ノート本体のキーボードのみおかしいのです。
これは故障なのでしょうか?

Aベストアンサー

こちらをお試し下さい
http://121ware.com/qasearch/1007/app/nec.jsp?003474

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

Qキーボード入力がおかしい

キーボード入力の際、vを押すとvb nを押すとnm のように
隣のキーが一緒に入力されてしまいます。
他、スペースキーがエンターの役割をしていたりと非常に困っています。

確認したこと・試したこと

キー入力は日本語になっている。
他のキーボードを接続し、試してみても同じ症状。
OSを新規でインストールをしてもなおらない。

他のキーボードで試してみて同じ症状だったので、キーボードの故障は
考えにくいのかなと感じていますが、何か原因になりうる可能性がある
ことはあるのでしょうか?

Aベストアンサー

こんにちは。

・他のキーボードも同じ
・OSを新規でインストールしても治らない

という事であれば、マザーボードが原因ではないでしょうか?
USBキーボードで試して、正常に入力できるようならば、
PS/2ポートの異常かと思います。

それか、OSのCDからブートして回復コンソールでの入力に
異常がなければ、マザーボードではないと思うので、
もしくはキーボードドライバが原因・・・?
他のキーボードドライバを試してみてください。

ここまでやって無理なら、私は修理に出します。
保証期間内であれば、購入店やメーカーで対処してもらった方がいいと思います。

Qvb6(access2000)でWebBrowserを使いテキストボックスに入力をしたい

開発環境 VB6 Access2000
WebBrowserでページを表示させ、そこにあるテキストボックス
--ソースは<input type="text" name="aaa" となっている--

に値を入力する方法を教えてください。
また、submit-ボタンを押す方法も教えていただければと思います。

検索しても最近は.NET環境のものばかりで、vb6しかもってないので苦労しております。

よろしくお願いいたします。

Aベストアンサー

VBなのにFormを使わないんですか?
Webアプリケーションというなら、VB6じゃなくてASPだと思うんですけど。
ScriptもVBが使えるので、VB6に近い感覚でプログラムできますし、特別な環境(Visual Studio)も不要です。(Fron tPage 4 があると樂かも)

Qキーボード入力がおかしい。

WinXPの自作PCを使用していますが、ここ数日、表題のとおりキーボード入力が
おかしくなる事があります。再起動すれば治るのですが、原因を知りたくて投稿しました。

症状:半角アルファベットならば正確に入力できるのだが、ローマ字入力で入力すると、
母音の入力がおかしくなっています。(例)「a」が「b」で、「I」が「C」で入力されます。 したがって、
「ちゃ」と入力する時に、「T」「Y」「A」の順で打ち込むが、画面上では「T」「Y」「B」となって
しまいます。今まで経験した事のない症状なので、教えていただけますでしょうか。

OSはXP(SP3)、ATOK2009を使用しています。キーボードは汎用の物を使っており、
再起動すると治る事からキーボード不良ではないと考えます。仕様で追加情報が必要であれば
補足欄に追加していきます。

Aベストアンサー

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外す
6 画面左で標準キーボードを選択
7 画面右側で日本語PS2/キーボード(106/109キーCtr+英数)を選択
8 警告が出るので(ふざけるな!)と言って無視して[はい]を押す(一応治るようにとお祈りしておく)
9 ドライバーのインストールが開始され終了後[完了]をクリックしておしまい
10 再起動の要求が出るのでプログラムを終了して再起動
11 再起動後デバイスマネージャーを確認する(日本語#$%&%$#であればOK)
12以上で復帰できない場合はスクリーンキーボードでは正常か確認し正常ならキーボードの故障もあり得ます
13 USB接続なら違うポートで拾ってみる事も必要です、

14 自作PCだからこんなこと書いても無駄そうですね、この位わかっとるって言われそうです)


長くてすいませんが通常はこれで治ると思う、

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外...続きを読む

QVB6でテキストボックスに入力した内容をリアルタイムにテキストファイルに書き出していく方法は?

テキストボックスに書き出した内容をテキストファイルに書き出すのに、最後に「保存」ボタンを作りまとめて行っていますが、これを、テキストボックスに内容を入力し始めたらそのままテキストファイルとして保存されるとともに、どんどん追加書き出しされるような方法はありませんか?
多分Keydownとかを使うのでは、と思うのですが、やり方が全然分かりません。どなたか教えてください!!!よろしくお願いします。

Aベストアンサー

テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。
また、BackSpaceやDeleteキーで消されたときにも対応できません。
TAGOSAKU7さまのコードのように、内容が変更されたら、テキストファイルのすべてを書きなおすという方法をとるのが理想です。
しかし、この方法では内容が長くなってきたときに、1文字1文字入力するたびに、ディスクアクセスが発生することになり、文字を打っている人にストレスを与えてしまいます。

ということで最後に文字を入力してからおよそ3秒後にファイルを保存するという方法を紹介します。

○ フォームにテキストボックスを貼り付け、MultiLineプロパティをTrueにする。
○ フォームにタイマーコントロールを貼り付け、Intervalプロパティを1000にして、EnabledプロパティをFalseにする。

○ 次のコードをフォームのコードに貼り付ける。

Const TEST_FILE = "c:\test.txt"
Const N_SEC = 3

Private Sub Text1_Change()

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

Static Cnt As Long
Dim strText As String
Dim lngFile As Long

Cnt = Cnt + 1

If Cnt = N_SEC Then

Timer1.Enabled = False
Cnt = 0
Kill TEST_FILE
strText = Me.Text1.Text
lngFile = FreeFile
Open TEST_FILE For Binary Access Write As #lngFile
Put #lngFile, , strText
Close #lngFile

End If

End Sub

-------------------

ってな感じでどうでしょう。
真中ら辺はTAGOSAKU7さまのコピーです。
ちなみに
Const N_SEC = 3
の3を変えれば何秒後でもできます。

テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。
また、BackSpaceやDeleteキーで消されたときにも対応できません。
TAGOSAKU7さまのコードのように、内容が変更されたら、テキストファイルのすべてを書きなおすという方法をとるのが理想です。
しかし、この方法では内容が長くなってきたときに、1文字1文字入力するたびに、ディスクアクセスが発生することになり、文字を打っている人にストレスを与えてしまいます。

ということで最後に文字を入力...続きを読む

QMacのキーボード入力がおかしいのですが、

マッキントッシュの環境で、
これまでは正常だったキーボードの入力が座席移動のため、コードを抜き差しした後おかしくなってしまいました。全ての入力ではないのですが、

以前(正常時)   現在(おかしい)
・半角/全角幹事キー → ‘ 
・&         → ^
・‘         → &
・(         → *
・)         →(
・*         → ”   

等、他の記号もずれています。
ちなみにOSは 8.6です修正のしかたが
判るかた教えて下さい。

Aベストアンサー

>G3ブルーホワイトで使用してました、
>APPLE USB KEYBOARD - JISを使用していました、
これが問題だったようです、
>APPLE PRO KEYBOARD - JIS(G4 1250mhz用)に変えたらできました。

なるほど。機種がわからなかったので何でしたが最近の機種はそれに付属しているキーボードより古いものはご認識されるんですがそれが原因だったんですね。

試しにうちのマックの1.25G DUALに以前のマックのキーボードを指したらやはりどんなことをしてもご認識しました。

同じ機種同士での移動と勘違いしていたのが早合点でしたね

QASP.NET(VB2005)■ WEBページのテキストボックスへ入力するとき、文字列を2桁入力するごとにハイフンを表示させたい

ユーザーがWEBページのテキストボックスへ入力するとき、
文字列を2桁入力するごとにハイフンを表示させ、その状態を維持したまま
次に文字列を入力させることは可能でしょうか?

例.
1.ユーザーが「01」と入力
2.ハイフンが表示され、テキストボックスの表示は「01-」となる
3.続けてユーザーが「02」と入力
4.ハイフンが表示され、テキストボックスの表示は「01-02-」となる

この流れで「01-02-AB-CD-E5-F5」とテキストボックスに表示される結果にしたいのです。
その後、テキストボックス文字列をデータベースに取得させます。
(因みに上記英数字はあくまでも例です)

開発環境は以下です。
 ・WinXP SP2
 ・Microsoft Visual Studio 2005(VB2005)
 ・ブラウザはIE6のみを前提としています。
 
いつも質問ばかりで申し訳ございませんが、
もしご存知の方がいらっしゃいましたらどうぞご教授をお願いします。
ヒントになるようなことや参考になるWEBサイトでもアドバイス頂けると嬉しいです。

現場開発経験約3ヶ月ほどなのでわかりやすく説明下さるとなお有難いです。<(_ _)>

ユーザーがWEBページのテキストボックスへ入力するとき、
文字列を2桁入力するごとにハイフンを表示させ、その状態を維持したまま
次に文字列を入力させることは可能でしょうか?

例.
1.ユーザーが「01」と入力
2.ハイフンが表示され、テキストボックスの表示は「01-」となる
3.続けてユーザーが「02」と入力
4.ハイフンが表示され、テキストボックスの表示は「01-02-」となる

この流れで「01-02-AB-CD-E5-F5」とテキストボックスに表示される結果にしたいのです。
その後、...続きを読む

Aベストアンサー

クライアントスクリプトを仕込まないといけないでしょう
<script type="text/javascript">
<!--
function myInsert()
{
  var ss = this.value;
  if ( ss.length % 3 = 0 && ss.length > 0 )
  {
    this.value = ss.substring(0,ss.length-1) +
     '-' + ss.substring(ss.length-1,ss.length);
  }
}
//-->
</script>
といったスクリプトを埋め込んでおきます

Page_Loadイベントなどで
dim cs as ClientScriptManagr = Page.ClientScript
dim s as string
s = "window.onlooad = function() { docuemnt.getElementById('TextBox1').onkeyup = myInsert; }"
if cs.IsIsClientScriptBlockRegistered("myInsert") = False Then
  cs.RegisterClientScriptBlock(Me.GetType(), "myInsert", s)
End if

クライアントスクリプトを仕込まないといけないでしょう
<script type="text/javascript">
<!--
function myInsert()
{
  var ss = this.value;
  if ( ss.length % 3 = 0 && ss.length > 0 )
  {
    this.value = ss.substring(0,ss.length-1) +
     '-' + ss.substring(ss.length-1,ss.length);
  }
}
//-->
</script>
といったスクリプトを埋め込んでおきます

Page_Loadイベントなどで
dim cs as ClientScriptManagr = Page.ClientScript
dim s as string
s = "window...続きを読む

QIEとOEの時のキーボード入力がおかしい

こんにちは、キーボード入力がおかしいので質問させてください。Internet ExpolorerとOutlook Expressの時だけキーボードの入力が変なのです。@をおすと [ と表示されます。英語の101キーボードになっているようです。しかし、他のソフトではWordやメモ帳等は正常に入力できるのです。デバイスマネジャーも日本語106/109になっています。
過去ログを見ましたが、IEだけとというのは見つけられませんでした。どなたか お助けください。

Aベストアンサー

これでもいいかも、
スタート→「ファイル名を指定して実行」をクリック
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411" /v "Layout File" /d "KBDJPN.DLL" /t REG_SZ /f
(一行です。コピペしてね)
と入力して「OK」をクリック

その後、Windowsを再起動させます。

QVBでテキストボックスの文字を・・・

テキストボックスに入力された文字(数字)を数値として認識させるにはどうすればいいですか?

Aベストアンサー

If IsNumelic(Text1.text)=False Then
エラー処理
else
変数 = Val(Text1.text)
end If

こんな感じではどうでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報