Wzajemne przeliczanie twipów na piksele jest istotne przy korzystaniu z funkcji API, ponieważ Access posługuje się twipami, a funkcje API wymagają podania wymiarów w pikselach.
Poniższy kod należy wkleić do modułu w Accessie:
'Moduł na podstawie z MSDN LibraryOption Compare Database Option Explicit Declare Function GetDC& Lib "user32" (ByVal hw&) Declare Function ReleaseDC& Lib "user32" (ByVal hw%, ByVal hDC&) Declare Function GetDeviceCaps& Lib "Gdi32" (ByVal hDC&, ByVal iCapability&) Const WU_LOGPIXELSX = 88 Const WU_LOGPIXELSY = 90 Public Type POINTAPI X As Long Y As Long End Type Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long'Zamienia piksele na twipyFunction Pixels2Twips(lngPix As Long, lngDirection As Long) As Long Dim lngDC As Long Dim lngPixelsPerInch As Long Const nTwipsPerInch = 1440 lngDC = GetDC(0)'Pobiera tzw. kontekst urządzeniaIf (lngDirection = 0) Then'Szerokość (wymiar poziomy)lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX) Else'Wysokość (wymiar pionowy)lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY) End If lngDC = ReleaseDC(0, lngDC) Pixels2Twips = (lngPix / lngPixelsPerInch) * nTwipsPerInch End Function'Zamienia twipy na pikseleFunction Twips2Pixels(ByVal lngTwips As Long, lngDirection As Long) As Long Dim lngDC As Long Dim lngPixelsPerInch As Long Const nTwipsPerInch = 1440 lngDC = GetDC(0) If (lngDirection = 0) Then'SzerokośćlngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX) Else'WysokośćlngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY) End If lngDC = ReleaseDC(0, lngDC) Twips2Pixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch End Function
Przykładowo, aby przeliczyć 100 pikseli na twipy, należy wywołać funkcję
Pixels2Twips
w następujący sposób:
=Pixels2Twips(100, 0)'gdy chodzi o wymiar poziomy=Pixels2Twips(100, 1)'gdy chodzi o wymiar pionowy
K. P.