tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルイベントが発生しないプログラム
記事No15331
投稿日: 2011/09/14(Wed) 16:13
投稿者Taro
VB6です。

ある、Aイベントのなかで
1.フラグがたったら
2.カウンタが設定値に達したら
起動するBイベントを書きたいのですが
このBイベントの書き方がわかりませんので
教えてください。

それとも、このような考え方はVBでは無理なのでしょうか?

Aイベントのなかで
1.2.の場合にプログラムを書いてもよいのですが、
Aイベントはできるだけ処理時間を短く書きたいのです。
Bイベントは長いタイマー時間処理を含んでいますので、
Aイベントのなかに書き込むとAイベントの処理時間が長くなってしまいます。

[ツリー表示へ]
タイトルRe: イベントが発生しないプログラム
記事No15333
投稿日: 2011/09/14(Wed) 21:18
投稿者魔界の仮面弁士
> 1.フラグがたったら
たとえば、フラグを Boolean 変数で管理しているのであれば、それを

 Private mHoge As Boolean

 Public Property Get Hoge() As Boolean
  Hoge = mHoge
 End Property

 Public Property Let Hoge(ByVal newValue As Boolean)
  If mHoge <> newValue Then
   mHoge = newValue
   If newValue Then
    MsgBox "フラグが立った!"
   End If
  End If
 End Property

のように、「プロパティ」へと昇格してしまえば、フラグ値が
特定の状態になったことを検証できるかと思います。
(上記は、Me.Hoge に True が代入された時にメッセージを表示しています)


> 1.フラグがたったら
> 2.カウンタが設定値に達したら
フラグおよびカウンタの変数をプロパティにすることで値の変化を検知し、
その上で、そこから Bイベントを RaiseEvent すれば目的を達成できないでしょうか。

[ツリー表示へ]
タイトルRe^2: イベントが発生しないプログラム
記事No15334
投稿日: 2011/09/15(Thu) 14:58
投稿者Taro
回答ありがとうございます。

> その上で、そこから Bイベントを RaiseEvent すれば目的を達成できないでしょうか。

私のレベルでは難解です。
今後、回答いただいた内容を勉強させていただきます。

なお、質問自体は
"カウンタが設定値に達したら"の場合は
TextBoxにカウンタ値を表示させ、TextBoxのChangeイベントで
カウント値をチェックする・・・ことで解決しました。

「そんな方法も思いつかなかったの?」と言われそうですが。

[ツリー表示へ]
タイトルRe: イベントが発生しないプログラム
記事No15338
投稿日: 2011/09/26(Mon) 09:56
投稿者AAA
そもそも、Bをイベントにする意味がわからないのですが……

> 1.フラグがたったら
> 2.カウンタが設定値に達したら

> Bイベントは長いタイマー時間処理を含んでいますので、
> Aイベントのなかに書き込むとAイベントの処理時間が長くなってしまいます。

単に、if文2つ書いて、どちらかがTrueだったらBの処理呼び出すだけですよね?
それで処理時間が長くなるものなのでしょうか。

個人的には、イベント内で別のイベントが起こる処理をすると順序制御が煩雑になり、
不具合の原因となるので、避けた方がいいと思うのですが…

[ツリー表示へ]