Const EM_SETREADONLY = &HCF Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Form_Load() SendMessage Text1.hwnd, EM_SETREADONLY, 1, 0 End Sub
USE FOCUS: PRIVATE SUB TEXT1_CLICK() COMMAND1.SETFOCUS END SUB
.enabled=false .backcolor=.....
方法一、Enable属性改为False,使用这种方法,Text控件不能够获得Focus,字体颜色是灰色 方法二、Locked属性改为True,可以获得Focus,并且可以Copy、Paste 方法三、编程实现 Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = 0 End Sub 方法四、使用API函数…… …………
哈哈哈!用Lable控件或都Picture控件吧!
你这样干脆用 Label 控件算了!
text1.locked=true ... PRIVATE SUB TEXT1_GETFOCUS() IF COMMAND1.ENABLED THEN COMMAND1.SETFOCUS END SUB
對啦。把它LOCK住就行啦!能獲得輸入焦點,但不能輸入
在Visual Basic中,文本框(TextBox)是最常用的控件,熟练运用文本框是开发出高质量的应用程序的基础。笔者在从事应用程序开发中,摸索出有关文本框的应用技巧,写出来与VB爱好者共享。 1、设置只读文本框。 有些时候在窗口显示一段信息,但又不希望用户去改变它,怎样实现文本的只读呢?首先,我们可以利用标签框( label )的只读属性,以标签来代替文本框以实现只读属性,但也可以用小程序实现真正的文本框的只读。 Sub Text1_KeyPress (keyascii As Integer) keyascii = 0 End Sub 或者也可以用sendkey方法使文本框失去焦点,如以下程序: Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer) SendKeys "{tab}" End Sub 2、限定文本框的输入内容和格式。 以下程序可以实现限定文本框只能输入数字: Sub Text1_KeyPress (keyascii As Integer) If keyascii <48 Or keyascii> 57 Then Beep Beep [email protected] keyascii = 0 End If End Sub 若想限定文本框输入格式,可以使用VB的FORMAT函数,也可以使用专业版的屏蔽控件(Masked Edit),通过设定屏蔽控件的Mask属性可以对文本框的输入格式作精确控制。
4、在设计时实现文本框换行。 对于文本框,在设计时properties 窗口不能输入换行符,但可以再程序执行时用代码来换行,即使用 ASCII字符的13和10,如下列小程序就可将两行文本放入文本框: Sub form_load( ) NL=chr(13)+chr(10) text1.text=“my name is ”& NL & “ liu qiang” End sub
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Form_Load()
SendMessage Text1.hwnd, EM_SETREADONLY, 1, 0
End Sub
Text1.Locked=True
Text1.MaxLength=Len(Text1.Text)
当然,也可以通过TechnoFantasy兄的API实现,但我觉得,如果微软都是通过这种方法,还是用这样的比较好一些,速度也快,也不费资源。
Private Sub Text1_GotFocus()
Command1.SetFocus
End Sub
www.applevb.com
最简便,也最可行
如果你只是简单的显示文本内容的话,请用label控件,这样用户是无法修改的.
还是会出现那个可恶的光标。
COMMAND1.SETFOCUS
END SUB
.backcolor=.....
方法二、Locked属性改为True,可以获得Focus,并且可以Copy、Paste
方法三、编程实现
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub
方法四、使用API函数……
…………
...
PRIVATE SUB TEXT1_GETFOCUS()
IF COMMAND1.ENABLED THEN COMMAND1.SETFOCUS
END SUB
1、设置只读文本框。
有些时候在窗口显示一段信息,但又不希望用户去改变它,怎样实现文本的只读呢?首先,我们可以利用标签框( label )的只读属性,以标签来代替文本框以实现只读属性,但也可以用小程序实现真正的文本框的只读。
Sub Text1_KeyPress (keyascii As Integer)
keyascii = 0
End Sub
或者也可以用sendkey方法使文本框失去焦点,如以下程序:
Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer)
SendKeys "{tab}"
End Sub
2、限定文本框的输入内容和格式。
以下程序可以实现限定文本框只能输入数字:
Sub Text1_KeyPress (keyascii As Integer)
If keyascii <48 Or keyascii> 57 Then
Beep
Beep
[email protected]
keyascii = 0
End If
End Sub
若想限定文本框输入格式,可以使用VB的FORMAT函数,也可以使用专业版的屏蔽控件(Masked Edit),通过设定屏蔽控件的Mask属性可以对文本框的输入格式作精确控制。
3、为TextBox 创建快捷键。
VB规定,添加在窗体上的控件均在其Tabindex 属性中记载其加载顺序,程序运行时焦点按Tabindex 属性规定的顺序在控件间跳转。而为了简化操作,可VB中为任何具有 caption的属性的控制创建快捷键,这通过caption 属性中在想作为快捷键的字母前加&号实现。但有一个问题值得注意,而类似文本框这样的控件无 caption 这样的属性,这时可将标签与文本框同时使用。为 lable创建快捷键,标签 Tabindex 属性设置比文本框小1,又因为label 不能接收按点,焦点会自动跳至文本框。这相当于为文本框创建了快捷键。具体步骤如下:
(1) 首先绘制标签,再绘制文本框。或随意绘制各种控制,将标签 Tabindex 属性设置比文本框小1
(2) 在标签的caption 属性中使用“&”号设定快捷键
这样就相当于为文本框设定了快捷键,当你按下标签框的快捷键时,焦点就会跳至文本框上。
4、在设计时实现文本框换行。
对于文本框,在设计时properties 窗口不能输入换行符,但可以再程序执行时用代码来换行,即使用 ASCII字符的13和10,如下列小程序就可将两行文本放入文本框:
Sub form_load( )
NL=chr(13)+chr(10)
text1.text=“my name is ”& NL & “ liu qiang”
End sub
5、创建口令文本框。
创建口令文本框可用设置属性的方法,也可以通过调用WINDOWS的API应用函数接口来实现。首先,文本框的属性 Passwordchar和maxlength 可用来设置口令框。其中 Passwordchar 指定文本框显示的字符,如指定“*”,则在文本框内显示“*”,Maxlength确定文本框中能输入几个字符。超过Maxlength以后,文本框发出警告声,不能接收更多的字符。若使用WINDOWS应用函数接口,可用GetWindowLong、SetWindowsLong和SendMessage等接口函数来实现,有兴趣的读者可查阅Windows API函数手册或VB的联机帮助文件,这里就不一一赘述了。