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

A 回答 (1件)

FormのKeyPreviewプロパティ=Trueにして


Form_Keydown イベントに記述しましょう。

if KeyCode = vbKeyF1 Then
  MsgBox "(゜ .゜)ノ"
End If
    • good
    • 0
この回答へのお礼

KeyPreviewがポイントでしたか。。

あっさり解決です(笑)
どうもありがとうございました m(__)m

お礼日時:2002/02/08 00:30

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

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

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

Qイベントevt?evt.target:event.srcElement;の意味合い

以下の理解で合っているのでしょうか?
よくイベントの取得で

エレメント.onclick = function(evt){
var e = evt?evt.target:event.srcElement;
}
でeにイベントオブジェクトの発生元要素をセットしているのを見かけますが、
これは、ブラウザーの違いの吸収なのでしょうか?

firefoxでは、イベントハンドラー関数にイベントオブジェクトが渡されるので、渡されたイベントオブジェクトよりevt.targetで発生元要素をセットし、一方IEでは、eventという名前のオブジェクトが存在している(?)ので、イベントハンドラー関数にイベントオブジェクトが渡されず、event.srcElementで発生元要素をセットする。
 ※Opera、Safariは何でも良い

IEの場合、後から、イベントが追加されたらeventオブジェクトはどうなるのでしょうか?ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?

Aベストアンサー

> ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
attachEvent() を使えば、複数のイベントハンドラを定義できそうです。(未検証)
また、attachEvent() の第一引数からイベントオブジェクトを取得できる、とbabu_babooさんに教わりました。
http://okwave.jp/qa5081024.html?ans_count_asc=1

ただ、attachEvent は実行順が不定という欠点があるので、現実的には「出来ない」という結論になると思います…。

addEventListenerとattachEventでは実行される順番が違う at HouseTect, JavaScripter Blog
http://hisasann.com/housetect/2008/09/addeventlistenerattachevent.html
IEのイベント実行順序は不定? - inamenaiの日記
http://d.hatena.ne.jp/inamenai/20080915/p1

IEが addEventListener() に対応してくれればいいのですが…。

> ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
attachEvent() を使えば、複数のイベントハンドラを定義できそうです。(未検証)
また、attachEvent() の第一引数からイベントオブジェクトを取得できる、とbabu_babooさんに教わりました。
http://okwave.jp/qa5081024.html?ans_count_asc=1

ただ、attachEvent は実行順が不定という欠点があるので、現実的には「出来ない」という結論になると思います…。

addEventListenerとattachEventでは実行される順番...続きを読む

Qフォーム上にある、オブジェクトの初期化

行いたい処理は次のような処理です。
1.フォームに”クリア”ボタンを配置
2.1が押された時、フォーム上のテキストボックス、コンボボックス、チェ ックボックスが初期化される

そこで、質問です。フォーム上にあるオブジェクトは60近くあるので1つ1つのオブジェクトに =Null、=""で初期化するのは大変なので、一括で初期化する方法を探しています。

どなかた、知っている方がいらっしゃったら、教えていただきたいと思います。お願いいたします。

Aベストアンサー

  Dim Obj As Object

  For Each Obj In Controls
    If TypeOf Obj Is CommandButton
       ...
    Else If TypeOf Obj Is TextBox
       ...
    End If
  Next Obj

Qmousewheelイベントについて

あまりしないことだと思うのですが。
質問させていただきます。

ボタンをクリックしてmousewheelイベントを発生させることはできるでしょうか。
下記の様に書いたのですが、
event.wheelDelta = -120; //or 120
が無視されました。

function click_hoge(){
var event = document.createEventObject();
event.eventType="mousewheel";
event.wheelDelta = -120; //or 120
document.body.fireEvent( "onmousewheel", event );
}

失礼いたします。

Aベストアンサー

eventオブジェクトのwheelDeltaプロパティは、
現状のブラウザ(IE、Chrome、Firefox、Safari)では
読み出しのみで、値をセットをする事は出来ません。

http://msdn.microsoft.com/en-us/library/ms535142%28v=VS.85%29.aspx
http://help.dottoro.com/ljekedtv.php


WheelEventイベントの発火自体出来ます。
IEは、
 var evt = document.createEventObject();
 evt.detail = 0;
 elment.fireEvent ("onmousewheel",evt);
IE以外は、
 var evt = document.createEvent("WheelEvent");
 var detail = 0;
 evt.initUIEvent("mousewheel",true,true,document.defaultView,detail);
 elment.dispatchEvent(evt);
です。DOM Level 3 Eventインターフェースが実装されれば、
 var evt = document.createEvent("WheelEvent");
 evt.initWheelEvent("wheel",true,true,document.defaultView,0,0,0,0,0,0,
  document.body,null,0,-120,0,0);
 elm.dispatchEvent(evt);
とできそうですが....

現状の対処として、イベント自体は発火してますから、
detailプロパティにホイール量を仮セットしておいて、
onmousewheelのイベントハンドラー関数で、
event.wheelDeltaを参照する代わりに、event.detailを参照して
スクロールなり何なりの処理を自分で書いてあげれば、
思ったことが出来るかも。

http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents
http://help.dottoro.com/ljrxdxdw.php
http://msdn.microsoft.com/en-us/library/ms536390%28VS.85%29.aspx

eventオブジェクトのwheelDeltaプロパティは、
現状のブラウザ(IE、Chrome、Firefox、Safari)では
読み出しのみで、値をセットをする事は出来ません。

http://msdn.microsoft.com/en-us/library/ms535142%28v=VS.85%29.aspx
http://help.dottoro.com/ljekedtv.php


WheelEventイベントの発火自体出来ます。
IEは、
 var evt = document.createEventObject();
 evt.detail = 0;
 elment.fireEvent ("onmousewheel",evt);
IE以外は、
 var evt = document.createEvent("WheelEvent");
 var detail = 0;
 e...続きを読む

Q子フォームから親フォームのオブジェクトを参照したい。

こんばんわ。
いまVB.Net2005でプログラミングしている者です。
子フォームから親フォームのオブジェクトを参照したいのですが,
うまくいきません。
親フォームにListBox1を置き,
ここに入力された内容を
子フォームで下記のように参照しようとしました。
Dim 子フォーム As New 子フォーム
Label1.Text = 親フォーム.ListBox1.SelectIndex
としたのですが,
親フォームでListBox1に0以外のリストを選択したのに,
子側に来ると親フォーム.ListBox1.SelectIndexの値が
0になってしまい,親側での選択内容が反映されません。
どうすれば正しく参照できるでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

’親フォーム
Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim NewForm As New Form2()

    NewForm.ListName = "12345"  '親フォームの値を子フォームに渡す
    NewForm.ShowDialog()     '子フォームを表示
    MsgBox(NewForm.ListName)   '子フォームから値を受け取る
  End Sub
End Class


'子フォーム
Public Class Form2
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Me.Close()
  End Sub
  Public Property ListName() As String
    Get
      Return TextBox1.Text
    End Get
    Set(ByVal value As String)
      TextBox1.Text = value
    End Set
  End Property
End Class

’親フォーム
Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim NewForm As New Form2()

    NewForm.ListName = "12345"  '親フォームの値を子フォームに渡す
    NewForm.ShowDialog()     '子フォームを表示
    MsgBox(NewForm.ListName)   '子フォームから値を受け取る
  End Sub
End Class


'子フォーム
Public Class Form2
  Private Sub Button1_Click(ByVal...続きを読む

QDLL内のイベントをハンドリング

VB2008にて、外部DLL(VB2008作成)を使用しようと考えています。

外部DLLの仕様書には、メソッド、イベント、プロパティが記載されており、
外部DLLの発生させるイベントをハンドリングしたいのですがうまくいきません。

「参照の追加」にてDLLを指定し、ソース内で該当DLLのクラスもインスタンス化し、
DLL内のメソッドは使用できています。

イベントに関して仕様書には
Event001(Byval arg1,Byval arg2)、Event002(Byval arg1,Byval arg2)、Event003…
このように記載されています。


該当DLLのインスタンス化したものをTestClassとして、
Public Event TestEvent Handles TestClass.Event001
という記載では駄目でした。

外部DLLのイベントのハンドリングについて、ご教授頂けましたら幸いです。

Aベストアンサー

まず、

Private WithEvents TestClass As Class1

などのように宣言します。(クラスを Class1 としました。また、必要であれば、Protected や Public にしても構いません。)
すると、コードのウィンドウの上にある二つ並んだコンボボックスの左側で TestClass が選択できるようになります。TestClass を選択して、次に、右側のコンボボックスから Event001 を選択すると

Private Sub TestClass_Event001(ByVal arg1 As Object, ByVal arg2 As Object) Handles TestClass.Event001

End Sub

が自動的に生成されると思います。
(手入力も可)

Q【VB2005】ボタンのフォーカス移動が知りたい

ボタンコントロールをBtn1~Btn4まで設置していることを前提に
質問させてもらいます。

Btn1を押したら、Btn3にフォーカスが移動するプログラムを
どうすれば作れるのか教えて下さい。

Aベストアンサー

Focusメソッドを使ってください。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard17.htm

Qイベント日付(複数または連続した日付)をデータベースで管理する方法について

イベント情報のデータベースを作成していますが、
どのように日付情報をデータベースとして持たせたらよいのか悩んでいます。
効率的な方法がありましたら教えていただけると幸いです。
長文になり、失礼いたします。

[目的]
イベント毎に開催日時や主催者などのデータベースを構築し、開催日時で検索を行いたい。

[悩みどころ]
開催日時が、”2008年9月24日”のように1日で終わるものであれば問題ないのですが、”2008年9月24~28日”のような連続した日付や、”2008年9月24日、2008年9月26日”のような連続しない複数日の場合に、どのようなデータベース構造を持たせるべきなのか悩んでいます。

[現状の案]
現状は、イベントテーブルと日付テーブルを分けて管理する方法を考えていますが、これが一般的な方法なのでしょうか。

<EVENT_TABLE>
event_id:(auto increment)
event_name:イベントの名前

<DATE_TABLE>
date_id:(auto increment)
event_id:EVENT_TABLE.event_id を指すID
date:イベント開催日単日

イベントの開催日が1日であれば、一つのevent_idと一つのdate_id。
イベントの開催日が、連続した三日であれば、一つのevent_idと三つのdate_id。
イベントの開催日が、連続しない三日であれば、一つのevent_idと三つのdate_id。

イベント情報のデータベースを作成していますが、
どのように日付情報をデータベースとして持たせたらよいのか悩んでいます。
効率的な方法がありましたら教えていただけると幸いです。
長文になり、失礼いたします。

[目的]
イベント毎に開催日時や主催者などのデータベースを構築し、開催日時で検索を行いたい。

[悩みどころ]
開催日時が、”2008年9月24日”のように1日で終わるものであれば問題ないのですが、”2008年9月24~28日”のような連続した日付や、”2008年9月24日、2008年9月26日”のような連続...続きを読む

Aベストアンサー

一般的かどうかはわかりませんが、
複数のテーブルをJOINするのが好みかどうかとか、
データベースの効率を考えるとどうかと言うので決まってくるのでしょう。

私はあまりJOINしたくないと言う気持ちだけの話でANo.1のご回答にあるような感じでしてしまいます。
これに、連続しない開催の場合は、初日のイベントIDを他の開催日のデータに持たせて関連づけておけば、重なるデータ(イベント名など、他詳細情報もこちらに記録されるのだと思っています)は初日の方にだけ記録しておいても、なんとかなるのかなと思います。
と言うのが、私の今までの経験から思いつく事でした。

ANo.2で質問者様の方法で十分との事でしたので、よくよく考えてみると、なるほどその方が拡張性があるのかなと思ったりもしています。
データベース効率はどちらがいいのかわかりませんが、今お考えになられている方法から遠のくと難しくなるかも知れませんので、別の問題が起こらない間はそのまま進めてみられた方がいいのかと思います。

「DATE_TABLE」は、連続していようとしていまいと関係なく、開催している日分のデータがあると言う事と考えてよろしいでしょうか。
日時で検索するのでしたら、「DATE_TABLE」には、その日の開始時刻と終了時刻を記録しておくようになるのかも知れません。
最終日だけ早めに終わったりするようなイベントもあるのでしたら、「EVENT_TABLE」側で時刻を持つよりもいいのかなと思います。

一般的かどうかはわかりませんが、
複数のテーブルをJOINするのが好みかどうかとか、
データベースの効率を考えるとどうかと言うので決まってくるのでしょう。

私はあまりJOINしたくないと言う気持ちだけの話でANo.1のご回答にあるような感じでしてしまいます。
これに、連続しない開催の場合は、初日のイベントIDを他の開催日のデータに持たせて関連づけておけば、重なるデータ(イベント名など、他詳細情報もこちらに記録されるのだと思っています)は初日の方にだけ記録しておいても、なんとか...続きを読む

Qボタンを押した時のカーソルの変更

UserForm上に作成した拡大ボタンを押したときに、カーソルが虫眼鏡マークになるようにしたいのですが、どうすれば良いのでしょうか?

ボタンのイベントで、
UserForm1.MousePointer =fmMousePointerArrowなどとした場合には、うまくいくのですが、fmMousePointerCustomで、カーソルアイコンをカスタマイズ(虫眼鏡に)したいのです。

UserFormのプロパティで、MouseIconを指定すると、常にカーソルが虫眼鏡になってしまうし、どうしていいのか分かりません。

簡単に教えていただけないでしょうか。

Aベストアンサー

Private Sub Command1_Click()
Screen.MouseIcon = LoadPicture("c:\TEST.ICO")
Screen.MousePointer = vbCustom
End Sub

Private Sub Command2_Click()
Screen.MousePointer = vbDefault
End Sub

こう言う事でしょうか?

QActionscript3.0 子のイベントを削除

Actionscript3.0で親のムービーから子のイベント指定して削除することは可能でしょうか?

親のステージに配置したmymcの中でballをENTER_FRAMEを使い動かしています。
親のステージに配置したbtnをクリックすることで、
ENTER_FRAMEを削除したいのですが、
下記のスクリプトだと、親のほうでmyenterframeが未定義と表示されてしまいます。

どのように記述すればよいのでしょうか?
よろしくお願いいたします。


ーーーーーーーーーーーーーーーーー親ーーーーーーーーーーーーーーーーー
btn.addEventListener (MouseEvent.CLICK, myclick);
function myclick(event:MouseEvent):void{
mymc.removeEventListener(Event.ENTER_FRAME, myenterframe);
}

ーーーーーーーーーーーーーーーーーmymcーーーーーーーーーーーーーーーーー
addEventListener(Event.ENTER_FRAME, myenterframe);
function myenterframe(evt:Event):void {
ball.x++;
}

Actionscript3.0で親のムービーから子のイベント指定して削除することは可能でしょうか?

親のステージに配置したmymcの中でballをENTER_FRAMEを使い動かしています。
親のステージに配置したbtnをクリックすることで、
ENTER_FRAMEを削除したいのですが、
下記のスクリプトだと、親のほうでmyenterframeが未定義と表示されてしまいます。

どのように記述すればよいのでしょうか?
よろしくお願いいたします。


ーーーーーーーーーーーーーーーーー親ーーーーーーーーーーーーーーーーー
btn.addEventListener ...続きを読む

Aベストアンサー

myenterframeはmymcの名前空間にいるので

mymc.removeEventListener(Event.ENTER_FRAME, mymc.myenterframe);

とやれば動くんじゃないですかね


ちなみに僕はこういうことするときはmymc側に
リスナーを全てremoveする為の
destroyメソッドとか用意するようにしてます

そういうふうにしておけばmymcにremoveしたいリスナーが増えたり
親のclick以外からもmymcのリスナーをremoveしたいとなったときも
書き換えが楽になるのでオススメ

Qフォームを変えたときテキストの内容を他のフォームで使用するには?

初歩的な質問すぎて申し訳ないのですが、
例えば、テキストボックスに入力した値を記憶して、
他のフォームに持ち越して使いたい場合は
どのようにすれば、良いのでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。
最初のフォームをUnloadしてしまう場合は、
標準モジュールにPublicで変数を宣言しておいて、最初のフォームを閉じる前に、どこかでテキストボックスの値をその変数に格納しておけば、他のフォームに持ち越せます。

標準モジュールで、
Public Buf As String

としておいて、最初のフォームの適当なイベント(Unloadなど)で、
Buf = TextBox1.Text

として、他のフォームの適当なイベント(Loadなど)で、
TextBox2.Text = Buf

とするわけです。
では。


人気Q&Aランキング

おすすめ情報