有一个VB程序的TEXT控件的Locked属性设置为TRUE不可写了,如何干掉这个属性?关于获得句柄之类的工作已经做到了,只是这个属性没法去掉。我写了点简单的程序来测试如何去掉这个属性,都没有成功 。请各位帮忙!我的测试代码form1:Private Sub Form_Load()
    Text1.Locked = True
End Sub
Private Sub Command1_Click()
    Dim l As Long
    l = SendMessage(Text1.hwnd, EM_SETREADONLY, False, ByVal 0&)
End Submodule:Public Const EM_USER = &H400
Public Const EM_SETREADONLY = EM_USER + 31
'Public Const EM_SETREADONLY = &HCFPublic Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long不管Public Const EM_SETREADONLY = EM_USER + 31
'Public Const EM_SETREADONLY = &HCF
选择哪个都不成功,文本框都不可编辑,请您帮忙

解决方案 »

  1.   


    Option Explicit
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_CHAR = &H102
    Const EM_SETREADONLY = &HCFPrivate Sub Command1_Click()
        Dim lngP As Long
        lngP = PostMessage(Text1.hwnd, EM_SETREADONLY, 0&, 0&)
        lngP = PostMessage(Text1.hwnd, WM_CHAR, Asc("A"), 0&)
    End Sub
      

  2.   

    首先你要设置Text1的Locked属性为True
      

  3.   

    应该是前面锁定 TEXT1.LOCKED=TRUE
    要能够编辑的时候  TEXT1.LOCKED=false
      

  4.   

    谢谢Form1的代码Option ExplicitPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_CHAR = &H102
    Const EM_SETREADONLY = &HCFPrivate Sub Form_Load()
        Text1.Locked = True
    End Sub
    Private Sub Command1_Click()
        Dim lngP As Long
        lngP = PostMessage(Text1.hwnd, EM_SETREADONLY, 0&, 0&)
        lngP = PostMessage(Text1.hwnd, WM_CHAR, Asc("A"), 0&)
    End Sub
    TEXT还是不可修改
      

  5.   


    谢谢 
    确实可以了。但是是在生成EXE文件,运行起来后。
    在VB开发环境,运行-》启动 状态下不好使,请问这是为什么?