LostFocusについて。


NINA RICCI  2004-06-10 04:35:14  No: 83938

お世話になります。

Private Sub cmdF2_Click()

Dim strcbo As String
Dim flg    As String

    flg = -1                      'ここで - 1 を持たせる
    
    If gfDbNum(strcbo) = 0 Then   '項目のクリア

        Cbo_Koukei.ListIndex = 0
        txt_Kihon_Suiryou = ""
        txt_Kihon_Ryoukin = ""
        txt_Kaisi_Suiryou = ""
        txt_Chouka_Ryoukin = ""
        txt_Tijou_Meta = ""
        txt_Tika_Meta = ""
        
End Sub

Private Sub cbo_koukei_LostFocus()

    If flg() = -1 Then Exit Sub      ' flg = - 1 の場合終了
    If Cbo_Koukei <> pstrCode Then
        Call setSelectDb(Cbo_Koukei)
        pstrCode = Trim(Cbo_Koukei)
    End If

End Sub

上記のようにしているのですがうまくいきません。
F2(クリアボタン)を押下した時はLostFocusの処理を通したくないのですが
なにかいい方法はないでしょうか?クリアボタン以外の時は処理を通したいのですが・・・


みり  2004-06-10 07:10:09  No: 83939

うまくいかないというのはクリアされるということですか?
そうであればflg()関数の返り値が-1ではないということでしょう。
flg() の関数で返ってくる値はなんですか?
flg() 関数の中身を書かないことには判断のしようがありません。


NINA RICCI  2004-06-10 07:15:57  No: 83940

Function,またはSubが必要ですといわれてしまいます・・・


みり  2004-06-10 07:23:53  No: 83941

flg関数を記述していないならあたりまえです。
プログラムを自分で作っているんじゃないんですか?


NINA RICCI  2004-06-10 07:27:16  No: 83942

作ってはいますがまだ初心者なのです。。
すいません。。この場合どのようなflg関数を作ればいいでしょうか?
ご教授お願い致します。


みり  2004-06-10 07:45:28  No: 83943

自分のやりたいことが分かっているなら
迷わずcmdF2_Clickでセットしたflgの値を
返す関数を作ればよいということは
分かるはずですが。。。

何か話題がLostForcusからずれてきましたね。
で以下推理で書くと
cmdF2_Click内で書かれたflgの値をcbo_koukei_LostFocus内で
判断して処理を分岐させたいということだと思いますので
以下の変更をすれば意図通り動くでしょう

cmdF2_Click内で宣言されている
Dim flg    As String
をモジュール変数として宣言する

cbo_koukei_LostFocus内のIfの判断を
If flg = -1 Then Exit Sub      
に直す

ようはflg()は意味が分からずソースを打ち込んでいた時のタイプミス
とみますがどうでしょう?


NINA RICCI  2004-06-10 09:53:44  No: 83944

<cmdF2_Click内で宣言されている
<Dim flg    As String
<をモジュール変数として宣言する

というのはどのように宣言すればいいのでしょう・・・?


いちゆ  2004-06-10 10:10:47  No: 83945

…話を聞いている限り、プログラム以前の問題が気がするんだが…?


イタタ  2004-06-10 18:16:13  No: 83946

LostFocusが発生しないときの処理がメンドイんで、
LostFocusに処理を書かないほうが良いですよ


ぴろあき  2004-06-10 20:06:19  No: 83947

っていうかString型って事はないでしょう。
フラグに使用するならBoolean型ですかね。

多分、LostFocus→Validateで解決でしょ。
んで、cmdF2のCausesValidationをFalseにするだけ。

ちなみに、
<以下ヘルプより抜粋>
データの妥当性チェックには、LostFocus イベントよりも Validate イベントが適しています。これは、定義上 LostFocus イベントがフォーカスの移動後に発生するからです。これに対し、Validate イベントを使用すると、すべてのチェック基準が満たされるまで、別のコントロールにフォーカスを移動できなくなります


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加