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

投稿時間:2003/01/09(Thu) 23:17
投稿者名:はらだ
URL :
タイトル:
FlexGridにおける列の最大桁数設定について
お世話になっております。
はらだと申します。

私は現在、GrapeCity社FlexGridを使用したプログラムを作成しようとしています。
そこで、各列に対して最大桁数を指定し、”Accessのテーブルに対するセルへの直接入力”や、
”TextBoxでのMaxLength指定”での操作イメージのように、一定桁数以上はセルへのキー入力を
受け付けないようにしたいのですが、なかなかうまくいきません。
そこで、もし知っている方がいらしたら、教えて頂けないでしょうか。(VB6.0のMSFlexGrid
の場合でも構いませんので)

少し、わかりにくいかもしれませんが、サンプルコードを載せておきますので
よろしくお願いいたします。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    'セルのエディタ内でのKeyDownイベントです。(KeyPressイベントでも同じでした)
    'ここで、セルのエディタ内で「1234567」と入力すると、「712345」と表示されてしまいます。
    Private Sub FlexGrid_KeyDownEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.KeyEditEventArgs) _
        Handles FlexGrid.KeyDownEdit
        'テキストエディタ内のバイト数
        Dim intByteLength As Integer = _
            System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(FlexGrid.Editor.Text)
        'テキストエディタ内の文字数
        Dim intLength As Integer = Len(FlexGrid.Editor.Text)
        '1列目の長さが6バイトを超える場合は、カットする
        Select Case e.Col
            Case 1
                If intByteLength >= 6 Then
                    FlexGrid.Editor.Text = _
                        Microsoft.VisualBasic.Left(FlexGrid.Editor.Text, intLength - 1)
                    Exit Sub
                End If
        End Select
    End Sub

投稿時間:2003/01/10(Fri) 10:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: FlexGridにおける列の最大桁数設定について
テキストボックスでしか確認していませんが、下記のような方法ではだめですか?
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If Len(Text1.Text) >= 6 Then
        KeyAscii = 0
    End If
End Sub

投稿時間:2003/01/10(Fri) 14:29
投稿者名:はらだ
URL :
タイトル:
いつもありがとうございます。(解決しました)
> テキストボックスでしか確認していませんが、下記のような方法ではだめですか?
> Private Sub Text1_KeyPress(KeyAscii As Integer)
>     If Len(Text1.Text) >= 6 Then
>         KeyAscii = 0
>     End If
> End Sub

花ちゃんさん。
いつも、ありがとうございます。

”テキストボックス”という言葉にヒントを得て、解決することができました。
具体的には、セルのエディタをTextBox型オブジェクトにキャストして、
MaxLength指定をするというやり方です。
また、お世話になることと思いますので、今後ともよろしくお願いいたします。
#言い忘れていて申し訳なかったのですが、開発環境はVB.NETです。

修正したサンプルコードを載せておきます。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    Private Sub C1FlexGrid1_KeyDownEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.KeyEditEventArgs) Handles C1FlexGrid1.KeyDownEdit
        Dim txtEditor As TextBox
        Dim ctlEditor As Control = C1FlexGrid1.Editor
        If (TypeOf ctlEditor Is TextBox) Then
            txtEditor = CType(ctlEditor, TextBox)
            txtEditor.MaxLength = 6
        End If
    End Sub