進階: 須具備專家編碼、 的互通性與多重使用者技巧。
因為 Microsoft Access 儲存維度] 和 [位置] 屬性 (以一點的十二分之一為單位),您有時候可能需要轉換 (以一點的十二分之一為單位),例如當您呼叫 Windows API 函式為像素。本文將告訴您,如何執行這項操作。
本文假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。
下面的 [TwipsPerPixelX() 和 TwipsPerPixelY() 函數可用來尋找一個像素的維度中 (以一點的十二分之一為單位)。像素尺寸系統之間可以有所不同且可能永遠無法方形,因此不同的函式,以像素寬度和高度是必要。
若要將這些函式加入至您的應用程式,將其中一個下列的程式碼區塊複製到新的模組。
注意: 您可能必須在現有的 Microsoft Access 程式庫中定義某些 Microsoft Windows API 函式,因此,您宣告可能是重複的項目。如果您接收到重複的程序名稱] 錯誤訊息,移除,或標記為註解在您的程式碼中宣告陳述式。
在 Microsoft Access 7.0 和 97 中
注意: 在標準模組不類別模組中放置於此程式碼。
Option Explicit
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
ByVal hdc As Long) As Long
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long
Const HWND_DESKTOP As Long = 0
Const LOGPIXELSX As Long = 88
Const LOGPIXELSY As Long = 90
'--------------------------------------------------
Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
ReleaseDC HWND_DESKTOP, lngDC
End Function
'--------------------------------------------------
Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
ReleaseDC HWND_DESKTOP, lngDC
End Function
將這些函式將分割 (以一點的十二分之一為單位) 您想要藉由水平測量任一 TwipsPerPixelX()] 或 [垂直測量的 TwipsPerPixelY() 轉換的數目。下列是範例:
OldTwips = 2377
NewPixels = OldTwips / TwipsPerPixelX()
在 Microsoft Access 1.x 和 2.0
注意: 在下列的程式碼範例的線條結尾是以底線 (_) 作為行接續字元。重新建立這個程式碼中存取基本時,則請移除行尾底線。
Option Explicit
Declare Function GetDC Lib "User" (ByVal hwnd As Integer) As Integer
Declare Sub ReleaseDC Lib "User" (ByVal hwnd As Integer, _
ByVal hdc As Integer)
Declare Function GetDeviceCaps Lib "Gdi" (ByVal hdc As Integer, _
ByVal nIndex As Integer) As Integer
Const HWND_DESKTOP = 0
Const LOGPIXELSX = 88
Const LOGPIXELSY = 90
'--------------------------------------------------
Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
Dim intDC As Integer
intDC = GetDC(HWND_DESKTOP)
TwipsPerPixelX = 1440 / GetDeviceCaps(intDC, LOGPIXELSX)
ReleaseDC HWND_DESKTOP, intDC
End Function
'--------------------------------------------------
Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
Dim intDC As Integer
intDC = GetDC(HWND_DESKTOP)
TwipsPerPixelY = 1440 / GetDeviceCaps(intDC, LOGPIXELSY)
ReleaseDC HWND_DESKTOP, intDC
End Function
將這些函式將分割 (以一點的十二分之一為單位) 您想要藉由水平測量任一 TwipsPerPixelX()] 或 [垂直測量的 TwipsPerPixelY() 轉換的數目。下列是範例:
OldTwips = 2377
NewPixels = OldTwips / TwipsPerPixelX()
如需有關這個主題的詳細資訊,搜尋
宣告陳述式,使用 Microsoft Access 說明索引。