[リストへもどる]
一括表示

投稿時間:2004/03/25(Thu) 13:22
投稿者名:太郎
Eメール:
URL :
タイトル:
Validateについて
開発環境
Win2000
VB6.0

自分が今悩んでいる所は、マウスでコマンドボタンClickイベントを起こすとValidateが
起きないのに、From_KeyPessでイベントを起こすとValidateが発生して入力チェックが動いてしまう
という問題です。

作りとしてはマウスでClickした場合はCmd_Clickイベントが発生し処理を行い、
From_KeyPessの場合、KeyCordを判定してCmd_Clickイベントを呼びます。
From_KeyPessイベントではkeyCordの判定くらいで特に処理は行っていません。
動きは全く同じであるにも関わらず、なぜFrom_KeyPessの時にだけValidate
が発生してしまうのでしょうか?

ちなみにコマンドボタンのCausesValidationはFalseに設定しています。

宜しくお願い致します。

投稿時間:2004/03/25(Thu) 13:46
投稿者名:GOD
URL :
タイトル:
Re: Validateについて
私の環境(Win2K+SP4, VB6+SP5)では両方とも発生していませんでしたよ。
VBにサービスパックとか当ててますか?
コードが違うのかな?

以下、確認したコード
Option Explicit

Private Sub Form_Load()
    Command1.CausesValidation = False
    Form1.KeyPreview = True
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    'Command1.Value = True
    Call Command1_Click
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
    Debug.Print "Text1_Validate"
End Sub

Private Sub Text2_Validate(Cancel As Boolean)
    Debug.Print "Text2_Validate"
End Sub

Private Sub Command1_Click()
    Debug.Print "Command1_Click"
End Sub

投稿時間:2004/03/25(Thu) 14:17
投稿者名:太郎
Eメール:
URL :
タイトル:
Re: Validateについて
返事有難う御座います。

サービスパックは5を当てています。

先ほどの質問にさらに状況を詳しく説明いたしますと、
問題の処理では画面初期表示を行っていまして、
そこでテキストボックスを全て初期化しています。

しかし、Cmd_ClickイベントではTxt_Validateイベントが起きないのに
From_KeyPessイベントではテキスト初期化中にValidateイベントが
発生してしまう状況です。

↓こんな感じで書いてあり、ここに行くとValidateイベントが発生します。
'テキストボックスクリア
For inti = 1 To 10
    txtInput(inti).Text = ""
Next inti

投稿時間:2004/03/25(Thu) 17:45
投稿者名:GOD
Eメール:
URL :
タイトル:
Re^2: Validateについて
> ↓こんな感じで書いてあり、ここに行くとValidateイベントが発生します。
> 'テキストボックスクリア
> For inti = 1 To 10
>     txtInput(inti).Text = ""
> Next inti
>
私が前回投稿した確認コードで同等の現象は発生するのでしょうか?
テキストのクリアで発生するとのことでしたので私も前回のコードにクリアを加えてみましたが
Validateイベントは発生していないようでした。何かやっていることが違うんでしょうか?
Form_KeyPressイベントでキーコードの判定とあるのですが、何のキーを押下した時に起きる現
象なのでしょうか?

Private Sub Command1_Click()
    Debug.Print "Command1_Click"
    'ここの2行追加
    Text1.Text = ""
    Text2.Text = ""
End Sub

#小さなサンプルを作って確認してみてください。