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

投稿時間:2004/06/07(Mon) 16:53
投稿者名:hallo
Eメール:
URL :
タイトル:
テキストボックス内での日付・数字の入力・表示方法
VB6.0 SP6、WindowsMe で開発しております。
フォームにテキストボックスを貼り付けて、そのテキストボックスに
日付(YYYY/MM/DD)を入力させたいと思っています。
現在は、「2004/06/07」 のように、[/]も入力するようになっていますが、
あらかじめ、テキストボックスに[/]が表示してあり、
「20040607」と入力するだけで、テキストボックスには「2004/06/07」
のように表示できるようにする方法がありましたら教えて頂けないでしょうか?
また、数字を入力したときも、「10000」と入力しましたら、「10,000」の
ように桁区切りの「,」を表示させる方法がありましたら教えてください。
(もし、できないのであればそのようなご返答でも構いません)
どうかよろしくお願いします。

投稿時間:2004/06/07(Mon) 17:49
投稿者名:ken2
Eメール:
URL :
タイトル:
Re: テキストボックス内での日付・数字の入力・表示方法
入力するだけで、っていう要件だとちょっとめんどくさそうですね。
ChangeイベントかKeyDownイベントでフォーマットしていくことになると思いますが、
テキストの中身を変えるとそこでまたChangeイベントが発生してしまうので、
再入防止フラグを作って制御しないといけないです。
KeyDownイベントだとコピーペーストに対応できないです。

↓のような完成している部品を使うか、LostForcusイベントで処理するようにするのがいいと思います。
http://www.grapecity.com/japan/support/database/P1_268.htm

投稿時間:2004/06/08(Tue) 01:06
投稿者名:Say
Eメール:
URL :
タイトル:
Re: テキストボックス内での日付・数字の入力・表示方法
TextBoxにこだわらないなら
マスク エディットコントロール(Microsoft Masked Edit Control)
使うとか。

投稿時間:2004/06/08(Tue) 01:14
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストボックス内での日付・数字の入力・表示方法
下記のような方法でもよければ

Private Sub Form_Load()
    Text1.MaxLength = 10
End Sub
Private Sub Text1_Change()
    Text1.Text = SetDateStyle(Text1.Text)
End Sub
Function SetDateStyle(myStr As String) As String
    Dim Temp As String
    Temp = Replace(myStr, "/", "")
    If Len(Temp) = 8 Then
        SetDateStyle = Format$(Temp, "####/##/##")
        If IsDate(SetDateStyle) = False Then
            Beep
            SetDateStyle = ""
        End If
    Else
        SetDateStyle = myStr
    End If
End Function

投稿時間:2004/06/08(Tue) 10:49
投稿者名:hallo
Eメール:
URL :
タイトル:
Re^2: テキストボックス内での日付・数字の入力・表示方法
ken2さん、Sayさん、花ちゃんさんありがとうございました。

ken2さんに記載していただいたホームページを見ましたが、便利なものだと
は思ったのですが、ちょっと高額なのがネックです。これがあると他にも色
々使えて一番簡単みたいですが。
日付の入力・表示は花ちゃんさんの方法でうまくできました。
  Temp = Replace(myStr, "/", "")
この部分の考え方が思いつかずどうしたらよいか迷っているところでした。
桁区切り付の数値の入力・表示はSayさんのマスク エディットコントロール
を使う方法でうまくできました。
テキストボックスにはこだわっておらず、ユーザーから入力できるものでし
たら何でもよかったのです。
これで、日付や金額の入力・表示がきれいな形になりました。
本当にありがとうございました。