VB的TextBox文本框实现垂直居中显示的方法
更新时间:2014年07月31日 14:49:37 投稿:shichen2014
这篇文章主要介绍了VB的TextBox文本框实现垂直居中显示的方法,比较实用的功能,需要的朋友可以参考下
本文实例代码可以实现让VB的TextBox文本框垂直居中显示效果。此处需要注意:Form_Load()窗体代码中的多行属性设置必须为真,即Text1.MultiLine = True,该属性为只读属性,请在设计时修改,换行会被之后的代码屏蔽,不想屏蔽可自行修改,调用此函数就好了。
具体的功能代码如下:
'================================================================================
'| 模 块 名 | TextBoxMiddle
'| 说 明 | 文本框居中显示
'=================================================================================
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function SendMessage Lib "user32 " Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const EM_GETRECT = &HB2
Private Const EM_SETRECTNP = &HB4
Private Const GWL_WNDPROC = (-4)
Private Const WM_CHAR = &H102
Private Const WM_PASTE As Long = &H302
Private prevWndProc As Long
Public ClipText As String
Public Sub DisableAbility(TargetTextBox As TextBox)
prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)
SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim Temp As String
Select Case Msg
Case WM_CHAR
If wParam <> 13 Then WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Case WM_PASTE
ClipText = Clipboard.GetText
Temp = Replace(ClipText, Chr(10), "")
Temp = Replace(Temp, Chr(13), "")
Clipboard.Clear
Clipboard.SetText Temp
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Clipboard.Clear
Clipboard.SetText ClipText
Case Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End Select
End Function
Sub VerMiddleText(mForm As form, mText As TextBox)
If mText.MultiLine = False Then Exit Sub
Dim rc As RECT, tmpTop As Long, tmpBot As Long
SendMessage mText.hwnd, EM_GETRECT, 0, rc
With mForm.Font
.Name = mText.Font.Name
.Size = mText.Font.Size
.Bold = mText.Font.Bold
End With
tmpTop = ((rc.Bottom - rc.Top) - _
(mText.Parent.TextHeight("H ") \ Screen.TwipsPerPixelY)) \ 2 + 2
tmpBot = ((rc.Bottom - rc.Top) + _
(mText.Parent.TextHeight("H ") \ Screen.TwipsPerPixelY)) \ 2 + 2
rc.Top = tmpTop
rc.Bottom = tmpBot
mText.Alignment = vbCenter
SendMessage mText.hwnd, EM_SETRECTNP, 0&, rc
mText.Refresh
DisableAbility mText
End Sub
'///////////////////////////////////////////////////////
'以下为窗体代码
'///////////////////////////////////////////////////////
Private Sub Form_Load()
'================注意!!!=================
'多行属性必须为真,暨Text1.MultiLine = True
'该属性为只读属性,请在设计时修改
'换行会被之后的代码屏蔽,不想屏蔽可自行修改
'===========================================
'调用此函数就好了
VerMiddleText Me, Text1
Caption = Len(Text1)
End Sub
相关文章
-
这篇文章主要介绍了VB调用Word拼写检查功能,非常实用的功能,需要的朋友可以参考下2014-07-07
-
这篇文章主要介绍了VB使用shell函数打开外部exe程序的实现方法,是非常实用的一个功能,需要的朋友可以参考下2014-07-07
-
这篇文章主要介绍了VB实现的倒计时类代码,非常实用的功能,需要的朋友可以参考下2014-07-07
-
这篇文章主要介绍了VB使用XMLHTTP实现Post与Get的方法,有一定的借鉴价值,需要的朋友可以参考下2014-07-07
-
本人一觉醒来闲得无聊,正在学习VB,便用VB写个简易的计算器吧!巩固基础2012-09-09
-
这篇文章主要介绍了VBA数组用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-08-08
-
VB编程基础课教程...2007-03-03
-
这篇文章主要介绍了VB获取文件大小的方法,可实现准确获取文件大小的功能,需要的朋友可以参考下2015-06-06
-
这篇文章主要介绍了VBA中操作Excel常用方法总结,包含关闭工作簿、打开工作簿、切换工作表等,需要的朋友可以参考下2014-07-07
-
这篇文章主要介绍了VB十七种可用一行代码完成判断的技巧代码,需要的朋友可以参考下2022-12-12
最新评论