いつも参考にさせていただいています。
つまずいてしまったので助言をいただけないでしょうか?
環境はVB6でOSはWin2000SP4です
SSTab内にテキストボックスが数個あり、このテキストボックスは
Validateによってフォーカスが変わる前に入力値が数値で無かった場合は
エラーになるという入力値検査が行われます。
しかしTabを変更された場合この入力値検査が行われなく、たとえば文字列を
入力した場合でもエラーになってくれません。
tabが変更された場合にこのテキストボックスの入力値検査を行わせるには
どのようにすればよいでしょうか?
また、このテキストボックスの入力審査はValidateイベントで行われなけ
ればならないという条件付です(ココは変えられないんです・・・T_T)
よろしくお願い致します。
別に… Validate イベントの関数呼び出したら良いだけだと思いますが…
[VB6.0]
Private Sub Command1_Click()
Call Text1_Validate(False)
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
MsgBox "エラーチェック"
End Sub
プログラムとしてはエラーチェック関数は別にした方が良いですかねぇ。
[VB6.0]
Private Sub Command1_Click()
Call ErrCheck
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
Call ErrCheck
End Sub
Private Function ErrCheck() As Boolean
MsgBox "エラーチェック"
End Function
厳密に言えば Validate イベントが起こってるわけではないので
質問に正確に答えようとしてないかなぁ?。直前にいたコントロールの
Validate イベントを発生させるには ValidateControls メソッドを
使ってみて下さい。
特攻隊長まるるう さん
回答ありがとうございます。
申し訳ありません、質問が下手でした。
実はタブの中のテキストボックスは何個かあり
テキストボックスにはインデックスがつけられています。
その為ただ呼び出すだけだとインデックスが不明な為
Text(n)_Validateがうまく動きませんでした。
ですが、インデックスは何とか取得できる方法がわかったのでいいのですが
今度はエラーを表示しても、エラーを表示した後にタブが変更されてしまう
不具合がでてしまいました。
やりたいことは
SSTab1.tab1からSStab1.tab2に移る前にSStab1.tab1にあるテキストボックス
の数値検査を行いエラーだったらタブの移動は行わないという動作です。
現在はMouseDownのイベントで数値検査を行っていますが、エラーでもタブ
が変わってしまいます。
何か方法をご存知でしょうか。
よろしくお願い致します。
いつも参考にしてるなら同じような処理は過去にも出てきたと思うけど
…前の書き込みだけで分からなかったです?
まぁ…社交辞令か(^^;)
これではどうです?
[VB6.0]
Option Explicit
Private mEventMusiFlag As Boolean
Private Sub SSTab1_Click(PreviousTab As Integer)
Dim ThisSetting As String
If mEventMusiFlag Then Exit Sub
With Me.SSTab1
Select Case PreviousTab
Case 0
MsgBox "0→" & .Tab
If Not (ErrCheck(Me.Text1)) Then
mEventMusiFlag = True
.Tab = PreviousTab
mEventMusiFlag = False
End If
Case 1
MsgBox "1→" & .Tab
If Not (ErrCheck(Me.Text2)) Then
mEventMusiFlag = True
.Tab = PreviousTab
mEventMusiFlag = False
End If
End Select
End With
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
Call ErrCheck(Me.Text1)
End Sub
Private Sub Text2_Validate(Cancel As Boolean)
Call ErrCheck(Me.Text2)
End Sub
Private Function ErrCheck(ByVal TextBoxX As TextBox) As Boolean
With TextBoxX
MsgBox "エラーチェック : " & .Text
End With
If False Then
ErrCheck = True
Else
ErrCheck = False
End If
End Function
何とか解決しました。
特攻隊長まるるう さんありがとうございます。
確かに似たようなのはあったんですが、どうにも流用できず
悩んでいました。
書いていただきましたサンプルでタブを戻す方法も分かりましたので
非常に助かりました。
ありがとうございます。