'前一阵写过一个,后来有点别的事就没继续写下去的.....'关键部份大概就是这个样子的....'键盘按下 Private Sub zRichTX32_KeyPress(KeyAscii As Integer) With zRichTX32 If XPos >= (.Width - CharWidth) Or KeyAscii = 13 Then '自动换行及回车 '判断是否在行尾回车 If CurX = Len(NowString) Then '赋值 CodeCache(CacheTotal) = NowString
'行标减1 Call StringOperation(CurX - 1, CurY) End If Case Else '否则 '累加 NowString = InsertStrByCurX(CurX, Chr(KeyAscii)) '行标累加 Call StringOperation(CurX + Len(Chr(KeyAscii)), CurY) End Select End With End Sub
Private Sub zRichTX32_KeyPress(KeyAscii As Integer)
With zRichTX32
If XPos >= (.Width - CharWidth) Or KeyAscii = 13 Then '自动换行及回车
'判断是否在行尾回车
If CurX = Len(NowString) Then
'赋值
CodeCache(CacheTotal) = NowString
'数组累加
CacheTotal = CacheTotal + 1
'更改数组下标
ReDim Preserve CodeCache(CacheTotal) As String '清空当前行
NowString = vbNullString
Else
'赋值
CodeCache(CacheTotal) = GetCurStrByCurX(CurX)
'数组累加
CacheTotal = CacheTotal + 1
'更改数组下标
ReDim Preserve CodeCache(CacheTotal) As String '获取CurX后的字符串
NowString = Mid(NowString, CurX + 1, Len(NowString) - CurX)
End If
'行标归0 列标累加
Call StringOperation(0, CurY + 1) Exit Sub
End If
'过滤
Select Case KeyAscii
Case 8 '退格
If NowString = "" Then
'删除一行
CacheTotal = CacheTotal - 1
'上移
Call zRichTX32_KeyDown(38, 0)
'至尾
Call zRichTX32_KeyDown(35, 0)
Else
'删除行标前一个字符
NowString = DeleteStrByCurX(CurX)
'行标减1
Call StringOperation(CurX - 1, CurY)
End If Case Else '否则
'累加
NowString = InsertStrByCurX(CurX, Chr(KeyAscii))
'行标累加
Call StringOperation(CurX + Len(Chr(KeyAscii)), CurY)
End Select
End With
End Sub
邮箱:[email protected]