我用图形控件写了一个这样的可是不能很方便的输入汉字请教各位大哥

解决方案 »

  1.   

    '前一阵写过一个,后来有点别的事就没继续写下去的.....'关键部份大概就是这个样子的....'键盘按下
    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
      

  2.   

    CSDN里贴代码会自动换行,你重排一下吧...这个代码很简单的,你自己看看应该就能弄明白了...
      

  3.   

    在上面的代码中好像只能输入英文字符,就算能输入汉字可不方便呀,请问你进行测试过吗.我写了一个片段与你上面的有一点相似,可输入汉字时不很方便.如能行可不可以发一份完整的源代码给我呀.
    邮箱:[email protected]