国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VB問題全功略(14)listbox 和combox
VB問題全功略(14)

66、ListBox 選項(xiàng)資料太長,如何設(shè)定 ListBox 的水平卷動(dòng)軸?

67、ListBox 選項(xiàng)資料太長,如何使用 ToolTip 來顯示內(nèi)容?

68、如何加長 ComboBox 的下拉選單?

69、如何加寬 ComboBox 的下拉選單?

70、如何用程序控制滑鼠游標(biāo) (Mouse Cursor) 到指定位置?

66、ListBox 選項(xiàng)資料太長,如何設(shè)定 ListBox 的水平卷動(dòng)軸?

VB 的 ListBox 并沒有水平卷動(dòng)軸的功能,如果遇到某一個(gè)資料項(xiàng)很長時(shí), 使用者就無法看到這一個(gè)資料項(xiàng)的所有內(nèi)容,要如何設(shè)定水平卷動(dòng)軸給 ListBox?

可利用 SendMessage 傳送 LB_SETHORIZONTALEXTENT 訊息給 ListBox,此一訊息的作用就是要求ListBox 設(shè)定水平卷動(dòng)軸, 細(xì)節(jié)如下:

1. API 的聲明:

注釋:16位

Const WM_USER = &H400

Const LB_SETHORIZONTALEXTENT = (WM_USER + 21)

Private Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long

注釋:32位

Const LB_SETHORIZONTALEXTENT = &H194

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

2. 程序范例:

注釋: List1 為 ListBox 的名稱

Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, 水平卷動(dòng)軸的寬度, ByVal 0&)

特別注意:

以上的水平卷動(dòng)軸寬度的單位是 pixel(像素),或許您會(huì)認(rèn)為這個(gè)寬度就是 ListBox 的寬度,但是結(jié)果卻不是這樣的,它真正指的是這個(gè)卷動(dòng)軸要卷動(dòng)的文字的寬度,所以您要預(yù)留可能放到 ListBox 內(nèi)的資料最長的長度,若留得太短,可能出現(xiàn)以下二種情形:

1、 水平卷動(dòng)軸的寬度設(shè)的比 ListBox 本身的寬度還短,VB會(huì)認(rèn)為不需要卷動(dòng)軸,而不產(chǎn)生卷動(dòng)軸!

2、 水平卷動(dòng)軸的寬度設(shè)的比 ListBox 內(nèi)的資料寬度還短,則只能卷動(dòng)一半,還是看不到完整內(nèi)容!

67、ListBox 選項(xiàng)資料太長,如何使用 ToolTip 來顯示內(nèi)容?

ListBox 選項(xiàng)資料太長,雖然可以加上水平卷動(dòng)軸,但卷來卷去還是有點(diǎn)麻煩,如果可以出現(xiàn) Popup ToolTip 就更正點(diǎn)了!當(dāng)然,您若想要二種功能一起使用,也是可以的。

關(guān)于這個(gè)主題,我看過很多范例都是使用 API 來做,但是以下這個(gè)方法既簡單,又不必使用任何 API,帥吧!

Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim YPos As Integer, iOldFontSize As Integer

iOldFontSize = Me.Font.Size

Me.Font.Size = List1.Font.Size

YPos = Y Me.TextHeight("Xyz") + List1.TopIndex

Me.Font.Size = iOldFontSize

If YPos < List1.ListCount Then

List1.ToolTipText = List1.List(YPos)

Else

List1.ToolTipText = ""

End If

End Sub

68、如何加長 ComboBox 的下拉選單?

Combo 預(yù)設(shè)的下拉長度只有 5,6 個(gè)選項(xiàng),當(dāng)選項(xiàng)很多時(shí),要卷老半天才能找到資料,很不方便!要加長 ComboBox 的下拉選單,方法如下:

在聲明區(qū)中放入以下聲明及 Subroutine

Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Public Sub SetComboHeight(oComboBox As ComboBox, lNewHeight As Long)

Dim oldscalemode As Integer

注釋: This procedure does not work with frames: you

注釋: cannot set the ScaleMode to vbPixels, because

注釋: the frame does not have a ScaleMode Property.

注釋: To get round this, you could set the parent control

注釋: to be the form while you run this procedure.

If TypeOf oComboBox.Parent Is Frame Then Exit Sub

注釋: Change the ScaleMode on the parent to Pixels.

oldscalemode = oComboBox.Parent.ScaleMode

oComboBox.Parent.ScaleMode = vbPixels

注釋: Resize the combo box window.

MoveWindow oComboBox.hwnd, oComboBox.Left, oComboBox.Top, oComboBox.Width, lNewHeight, 1

注釋: Replace the old ScaleMode

oComboBox.Parent.ScaleMode = oldscalemode

End Sub

在任何時(shí)候 (不一定是 Form_Load 或 Combo_DropDown),想要加長 ComboBox 的下拉選單時(shí),只要加入以下程序即可:

Call SetComboHeight(Combo1, 270) 注釋:設(shè)定的單位是 Pixels

69、如何加寬 ComboBox 的下拉選單?

和 ListBox 一樣, ComboBox 也會(huì)有寬度不夠的情形, Combo 下拉之后資料看不完整,當(dāng) Form 上的物件不多時(shí),還可以拉長一點(diǎn),但有時(shí)候也沒辦法!這時(shí)候,還是得靠 API 了!

在聲明區(qū)中放入以下聲明及 Subroutine

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Const CB_SETDROPPEDWIDTH = &H160

Public Sub SetComboWidth(oComboBox As ComboBox, lWidth As Long)

注釋: lWidth 是寬度,單位是 pixels

SendMessage oComboBox.hwnd, CB_SETDROPPEDWIDTH, lWidth, 0

End Sub

在任何時(shí)候 (不一定是 Form_Load 或 Combo_DropDown),想要加寬 ComboBox 的下拉選單時(shí),只要加入以下程序即可 (若設(shè)定的寬度小于 Combo 原來的寬度則無效):

Call SetComboWidth(Combo1, 270) 注釋:設(shè)定的單位是 Pixels

70、如何用程序控制滑鼠游標(biāo) (Mouse Cursor) 到指定位置?

以下這個(gè)例子,當(dāng) User 在 Text1 中按下 注釋:Enter注釋: 鍵后,滑鼠游標(biāo)會(huì)自動(dòng)移到 Command2 按鈕上方

請?jiān)诼暶鲄^(qū)中加入以下聲明:

注釋:16 位版本: ( Sub 無傳回值 )

Declare Sub SetCursorPos Lib "User" (ByVal X As Integer, ByVal Y As Integer)

注釋:32 位版本: ( Function 有傳回值,Integer 改成 Long )

Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

注釋:在 Form1 中加入以下程序碼:

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

x% = (Form1.Left + Command2.Left + Command2.Width / 2 + 60) / Screen.TwipsPerPixelX

y% = (Form1.Top + Command2.Top + Command2.Height / 2 + 360) / Screen.TwipsPerPixelY

SetCursorPos x%, y%

End If

End

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ListBox和ComboBox
【新提醒】VBA之Listbox控件基礎(chǔ)教程
VB編碼規(guī)范
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服