Dan Waters
dwaters at usinternet.com
Wed Nov 15 10:29:45 CST 2006
Hi Lonnie, Long ago I found code to do this from a site somewhere. I'll post it here. I haven't used it but you may be able to. --------------------------------------------------------------------- Option Compare Database Option Explicit Private Const GWL_STYLE = (-16) ' GetWindow() Constants Private Const GW_HWNDNEXT = 2 Private Const GW_CHILD = 5 ' Scroll Bar Constants Private Const SB_HORZ = 0 Private Const SB_CTL = 2 Private Const SB_VERT = 1 ' ScrollInfo fMask's Private Const SIF_RANGE = &H1 Private Const SIF_PAGE = &H2 Private Const SIF_POS = &H4 Private Const SIF_DISABLENOSCROLL = &H8 Private Const SIF_TRACKPOS = &H10 Private Const SIF_ALL = (SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS) ' Scroll Bar Styles Private Const SBS_HORZ = &H0& Private Const SBS_VERT = &H1& Private Declare Function apiGetScrollInfo Lib "user32" Alias "GetScrollInfo" (ByVal hwnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long Private Declare Function apiGetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function apiGetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function apiGetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Type SCROLLINFO cbSize As Long fMask As Long nMin As Long nMax As Long nPage As Long nPos As Long nTrackPos As Long End Type Public Function GetScrollBarPosition(frm As Form) As Long On Error GoTo EH ' Return ScrollBar Thumb position for the Vertical Scrollbar attached to the Form passed to this Function. Dim hWndSB As Long Dim lngRet As Long Dim sinfo As SCROLLINFO '-- Init SCROLLINFO structure sinfo.fMask = SIF_ALL sinfo.cbSize = Len(sinfo) sinfo.nPos = 0 sinfo.nTrackPos = 0 '-- Call function to get handle to '-- ScrollBar control if it is visible hWndSB = IsScrollBar(frm) If hWndSB = -1 Then GetScrollBarPosition = False Exit Function End If '-- Get the window's ScrollBar position lngRet = apiGetScrollInfo(hWndSB, SB_CTL, sinfo) GetScrollBarPosition = sinfo.nPos + 1 Exit Function EH: Application.Echo True End Function Private Function IsScrollBar(frm As Form) As Long On Error GoTo EH Dim hWnd_VSB As Long Dim hwnd As Long '-- Get ScrollBar's hWnd hwnd = frm.hwnd '-- Get first Child Window of the FORM hWnd_VSB = apiGetWindow(hwnd, GW_CHILD) '-- Walk through every sibling window of the Form Do If GetClassName(hWnd_VSB) = "scrollBar" Then If apiGetWindowLong(hWnd_VSB, GWL_STYLE) And SBS_VERT Then IsScrollBar = hWnd_VSB Exit Function End If End If '-- Get the NEXT SIBLING Window hWnd_VSB = apiGetWindow(hWnd_VSB, GW_HWNDNEXT) '-- Start the process from the Top again '-- Really just an error check Loop While hWnd_VSB <> 0 '-- If no vertical ScrollBar control is currently visible for this Form then IsScrollBar = -1 Exit Function EH: Application.Echo True End Function Private Function GetClassName(hwnd As Long) As String On Error GoTo EH Dim strBuffer As String Dim lngLen As Long Const MAX_LEN = 255 strBuffer = Space$(MAX_LEN) lngLen = apiGetClassName(hwnd, strBuffer, MAX_LEN) If lngLen > 0 Then GetClassName = Left$(strBuffer, lngLen) End If Exit Function EH: Application.Echo True End Function ------------------------------------------------------------------------- Dan Waters -----Original Message----- Subject: [AccessD] Control which record shows at top of subform I have a subform and have buttons that navigate to certain records. Sometimes when the requested record is located it appears in the middle of the subform. I have the subform sized to show a certain amount of records at a time and want the "found" record to be at the top of my list. Is this possible? May God bless you beyond your imagination! Lonnie Johnson ProDev, Professional Development of MS Access Databases Visit me at ==> http://www.prodev.us ____________________________________________________________________________