こんにちは!!

KeyPressイベントでBSキーとEnterキーのイベントを取得して、
いろいろな処理を書いているんですけど、
DelキーをBSキーと同じ処理、矢印キーをEnterキーと同じ処理にさせたいです。

それで質問なんですが、KeyPressイベントでDelキーと矢印キーのイベントを
取得する方法ってあるのでしょうか??
KeyDownかKeyUpイベントで取得するしかないのでしょうか??

ご存知の方がいらっしゃったら回答、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

キーアスキー イベントではDELキーの取得は無理です。


キーダウンを使用するのでは、まずいのですか?

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  Select Case KeyCode
    Case vbKeyDelete, vbKeyBack
      Debug.Print KeyCode
  End Select
End Sub
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

>キーアスキー イベントではDELキーの取得は無理です。
やっぱり無理なんですよね・・・。

とりあえず、KeyDownイベントでDELキーの取得をして、
KeyPressイベントBSキーのKeyAsciiでを呼ぶようにしてみようと思います。

ありがとうございました。

お礼日時:2002/01/16 08:58

このQ&Aに関連する人気のQ&A

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

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

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

Qif($key){ ($key eq 'aaa') || ~~を複数縦に記述したい

sub AAA {my($key)=@_;
if($key){
($key eq "aaa") || ($key eq "bbb") || ($key eq "ccc") || ($key eq "ddd") || &Error("$keyが不正です。");
}
}

のような形があるとして、$key eq "" の数が50個近くあるような場合、横に表示するのではなく縦に
($key eq "aaa") ||
($key eq "bbb") ||
($key eq "ccc") ||
($key eq "ddd") ||
と、見栄えよく表示させたいのですが
どのように記述すればよいのでしょうか。

また代替案などありましたらあわせてご教授頂けますと幸いです。

Aベストアンサー

正規表現で

$key =~ /^(
aaa|
bbb|
ccc|
ddd)$/x || &Error("$keyが不正です。");

Q継承したFormでKeyDownイベントを一括処理するには?

VB 2005を使用しています
System.Windows.Forms.Formを継承したFormを使って
画面を作っています。

各画面のKeyDownイベントに同じ処理をいれたいのですが、
個々の画面に実装すると変更が発生した場合、
各画面ごとに修正するという事態を回避したいと思います。

そこで継承したForm内でKeyDownイベントを管理したいのですが
その様な方法はあるのでしょうか?
ある場合、どういったキーワードがあるのでしょうか

Aベストアンサー

お世話になります。

> 個々の画面に実装すると変更が発生した場合、
> 各画面ごとに修正するという事態を回避したいと思います。
ここだけ見ると、ひとつ親クラスを作ってやって
そこから各画面に対する派生クラスを作ってやれば良さそうな感じがします。

System.Windows.Forms.Form
 |_
   Base Form(ここで KeyDown の実装)
   |_ 各画面1
   |_ 各画面2
   |_ ...

Qfor in文のkey取得できない

for (var key in hogeobject) {
if(key <= 10) {
       alert("1" + key);
switch (key){
      alert("2" + key);

このようなソースを書きました。
alert("1" + key);
は表示されますが
alert("2" + key);
は表示されません。

どのようにkeyの値を渡せばよいのでしょうか。
スコープの概念がわかっていないと思います。
宜しくお願いいたします。

Aベストアンサー

なんとなく問題が分かりました。

JavaScript における for-in 句で取得できるキーは、
仕様書を読む限り "the name of the next property"
となっています。

つまりキーは文字列型に変換される、と読み取れます。
実際に確認しましたが、for-in 句は必ず string 型を
取得するようです。

というわけで、

// 比較演算子は、型の自動変換を行うのでOK
if ('8' <= 10)
// switch句は、厳密な比較(===)を行うのでNG
switch('8'){ case 8: ... }
// parseIntすれば、number型で同じ値なのでOK
switch(parseInt('8')){ case 8: ... }


余談ではありますが

型の自動変換に頼った比較演算をするプログラミングは、
いずれ必ず間違いの元になりますのでご注意ください。

Q矢印(左右)キーでイベントを発生させたい。

いつもお世話になっております。
VB初心者です。ご理解のほど宜しくお願い致します。
データベースの入力画面でリストボックス1と2を二つ並べてあります。マウスクリックで選択できるのですが、操作性を良くする意味でキーボード入力にも対応させたいと思っております。
標準で矢印の↑←は上に移動します。↓→は下に移動します。
現状は[ESC]キーでリスト1と2を切り替えていますが操作性がとても悪いです。やはり←→キーでフォーカスを移動させたいです。
e.KeyChar = Chr(Keys.Left)
などとやってはみたのですが、受け付けてくれません。
ちなみにセレクト位置を移動させたリストボックスに反映させています。フォーカスを失ったリストボックスは再生成させてセレクトを消しています。
ご教授頂きたく宜しくお願いいたします。

Aベストアンサー

KeyDown等では矢印ボタンなどのイベントはあがってきません。

参考になさってみてください、解決すると思います。
http://dobon.net/vb/dotnet/control/btndetectarraykey.html

QどれがPrimary Key、ForeignKeyか調べるSQL教えて

テーブルの中には通常、Primary Key および Foreign Keyが設定されていると思いますが、あるテーブルの中でどれがPrimary Key および Foreign Keyとされているのか見れるSQLコマンドって、あるのでしょうか、教えてください。

Aベストアンサー

Primary Key(主キー制約)、Foreign Key(参照整合性制約)は共にデータ整合性をチェックする為の「制約」です。
それらはCreate tableやAlter tableというSQL構文で作成することは出来ますが、どの列に設定されているか参照する為のSQL文はありません。
Oracleの場合、User_ConstraintsやUser_Cons_columnsの「データディクショナリ」表をSelect文で表の情報(もちろん制約の情報も)がわかります。
例:Select * from User_Constraints;
他のデータベース(SYBASEとかSQLSERVERとか)は違うかもしれないので確認した方が宜しいと思います。

QKeydownイベントについて

VB6.0について質問です。
FormでKeydownイベントが動きません。
どのような原因が考えられますか?
コードは以下のように記述しています。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF8
cmd_F8.Value = True
Case vbKeyF9
cmd_close.Value = True
End Select
End Sub

Aベストアンサー

formのkeyPreviewがfalseになっていませんか?

Qmapによるkeyとvalueのinsertに失敗しております。

STLのmapコンテナにて、
valueを取得したり、
keyとvalueを登録するソースを書いていました。

get(key)にあたって、
valの取得に失敗した際には、
mapコンテナ上のkey-valueデータと
同期されているMySQLより、
データを取得してきます。

MySQLよりkeyに対応するvalの取得が
完了したら、
そのkeyとvalをmapコンテナに
insertしたいと思っています。

つきまして、
insertを行おうと、
「_container.insert(std::make_pair(key, val));」の一文を
ソースに挿入したところ、
「型が違う!」という内容(?)のエラー文で
コンパイル時に怒られてしまいました。

ただ、「どの様に直してごらん!」と
エラー文が言っているのか、
今いち、意味を理解できないでいます。

このエラー情報的には、
どんな風の型の改善を求められているのでしょうか?
教えていただけるとありがたいです。

もし可能でしたら、pointBの
「_container.insert(std::make_pair(key, val));」の部分で、
MySQLから取得済みkeyとvalを、
pointAのkeyとvalに代入する方法も
教えていただけるとありがたいです。

どちらかでも、
アドバイスをいただけますとありがたいです。
どうぞ宜しくお願い致します。


--------------------------------------------------
template<typename KEY, typename VALUE>
class hoge : public service_object<ipl<KEY, VALUE>>

{
virtual void put(key_type key, value_type val) {
_container.insert(std::make_pair(key, val)); // pointA
}

virtual cc::fu<value_type> get(key_type key) {

typename container_type::iterator iterator = _container.find(key);

if (iterator != _container.end()) {
return cc::fu<value_type>((*iterator).second);

}else {

//getにした場合MySQLよりkeyとvalueを取得完了できるので取得した。

/* MySQLより取得したkeyとvalをpointAのようにmapコンテナにinsertしたい。*/
_container.insert(std::make_pair(key, val)); //pointB

 }
}

};

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


■エラー文
error: conversion from
std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > > >, bool>’ to non-scalar type ‘csrpc::future<boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > >’ requested

STLのmapコンテナにて、
valueを取得したり、
keyとvalueを登録するソースを書いていました。

get(key)にあたって、
valの取得に失敗した際には、
mapコンテナ上のkey-valueデータと
同期されているMySQLより、
データを取得してきます。

MySQLよりkeyに対応するvalの取得が
完了したら、
そのkeyとvalをmapコンテナに
insertしたいと思っています。

つきまして、
insertを行おうと、
「_container.insert(std::make_pair(key, val));」の一文を
ソースに挿入したところ、
「型が違う!」と...続きを読む

Aベストアンサー

・template の型引数である KEY や VALUE と key_type, value_type はどのような関係にあるのか
・_container の型は何か
・変数 val の型は何か
あたりがわからんと, なんとも答えようがない気がするなぁ.
あと, 何も考えずに std::make_pair を使うのではなく, 適切な型の中で定義されている value_type を使ってオブジェクトを作った方がよいと思う.
もちろん「value_type で問題ないなら std::make_pair でも問題ない」わけなんだけど, std::make_pair よりも value_type の方が問題がより明確になるはず.

Qkeydown イベントについて

VB6なのですが、あるオブジェクトにフォーカスがある時には
キーダウンが出来るのですが、どこにもフォーカスがないときには、、
(強いて言うならフォームにフォーカス?)キーダウンイベントは
発生しないのでしょうか?
要は、カーソル、フォーカス、の位置に関係なく、「F1」を押したときに
ある動作をさせたいのです。
よろしくお願いします

Aベストアンサー

FormのKeyPreviewプロパティ=Trueにして
Form_Keydown イベントに記述しましょう。

if KeyCode = vbKeyF1 Then
  MsgBox "(゜ .゜)ノ"
End If

QKey.がいなくてもできるバンドの曲を教えてください

高校でバンドを組んでいるのですが、
メンバーはVo. E.G. E.B. Dr.のみで、私のバンドにはKey.がいません。
私が今まで見たバンドスコアはたいがいKey.が必要なものばかりで、なかなかKey.なしでできる曲が見つかりません。
機械でKey.だけの音を作ることもできるのですが、メンバーの意見は「できるだけ自分たちの音でやりたい」とのことだったので、できればその意見を取り入れたいと思い、Key.なしでできる曲を探しています。
今まではNANAの「THE END」ってアルバムの曲をやってきたのですが、それ以外で、Key.なしでできる、できれば知名度の高い曲(難易度は問いません)を知っている方教えてください!
お願いします。

Aベストアンサー

原曲にKeyが無い、と言う曲にこだわらず、自分たちのやりたい音楽をやるのが良いのではないかと思います。
その代わり、Keyが無い分アレンジが必要になるでしょう。
ですが、アレンジすることで音楽をより楽しめると思いますよ。
バンドスコアにとらわれないことが大事です。
Key以外の他パートは原曲通りなのか、Gtだけアレンジするのか、楽曲全体をアレンジするのか、アプローチは様々です。

参考にならないかもしれませんが、私もMaRiNa321さんと同じ構成のバンドをやっています。
そのバンドでたまに椎名林檎や東京事変のカバーをやったりするのですが、アレンジの方法は先ほど言ったように様々です。

完コピも良いですが、この際こういった事にもチャレンジしてみては?
難易度は問わないとのことなので、ちょっと難しいこと言ってみました。
回答にならなくてごめんなさい。

QKeyUpイベントにて

テキストボックスのKeyUpイベントにて『Enter』または『Tab』が押されたら処理をさせようと
Private Sub Text_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Text.KeyUp
If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Tab Then
  処理コード
End If
End Sub
としたのですが『Enter』のときしか処理コードが反映されません
ご教授お願いします

Aベストアンサー

TextBoxにTabキーの押し放しを認識させる方法は、フォームの全てのTabStop を False にする方法があります。通常の動作である、Tabキーによるコントロールの移動が出来なくなり、犠牲は大きいです。

Tabキーによって次のコントロールにフォーカスが移ってしまうことを逆に利用して、TextBoxの次にフォーカスが移るダミー的なコントロールを配置する方法もあります。ダミーのコントロールにフォーカスが来たら、TextBoxでTabが押されたと判断することも、TextBoxにフォーカスを戻すこともできると思います。

あるいは、テキストボックスからフォーカスがはずれる直前のイベントを捕らえる方法もあります。Validatingイベントについて調べてみて下さい。


人気Q&Aランキング

おすすめ情報