投稿日 | : 2006/10/07(Sat) 18:57 |
投稿者 | : ブンブン |
Eメール | : |
URL | : |
タイトル | : 解決(補足) |
>
> Changeイベントでコードを書いたらできたようです。
> (行数の取得はこのサイトに載ってます)
>
> Private Sub Text1_Change()
>
> Dim rc, cnt
>
> 'キャレットが移動した
> cnt = SendMessage(Me.Text1.hWnd, EM_GETLINECOUNT, -1, 0) 'テキストの行数を取得する
> rc = SendMessage(Me.Text1.hWnd, EM_LINEFROMCHAR, -1, 0) + 1 '現在の行番号を取得
>
> If cnt > 5 Then
> Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
> Text1.SelStart = Len(Text1.Text)
> End If
>
> end sub
>
補足です。上記は5行までの制限で以下のコードを入れないと
改行が入ってしまいます。ですのでKeyPressイベントに
下記のソースが必要です。
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim rc, cnt
cnt = SendMessage(Me.Text1.hWnd, EM_GETLINECOUNT, -1, 0) 'テキストの行数を取得する
rc = SendMessage(Me.Text1.hWnd, EM_LINEFROMCHAR, -1, 0) + 1 '現在の行番号を取得
'5行以上は改行不可。
If cnt > 4 Then
'改行コードが入力されたか
If KeyAscii = 13 Then
'入力をキャンセルする
KeyAscii = 0
End If
End If
End Sub