Ďakujem. Tak som to skúsil ale akosi to stále nefičí. Tu je trocha kódu:
V inicializacii User Controlsu mám takéto niečo:
saveHWnd = myGrid.hWnd
FhWnd = Filtre.hWnd
OldWindowProc = SetWindowLong(myGrid.hWnd, GWL_WNDPROC, AddressOf NewWindowProc)
myGrid je deklarovany ako Private premenna typu TDBGrid v User Controlse a je napojená na Table1 vo forulari.
Filtre je komponenta na User Controlse typu TDBGrid
Public Type SCROLLINFO
cbSize As Integer
fMask As Integer
nMin As Integer
nMax As Integer
nPage As Integer
nPos As Integer
nTrackPos As Integer
End Type
NewWindowProc mám definovanú v module takto nejako:
Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim i As SCROLLINFO
If msg = 276 Then
i.cbSize = Len(i)
i.fMask = SIF_ALL
GetScrollInfo hWnd, SBS_HORZ, i
SetScrollInfo FhWnd, SBS_HORZ, i, True
End If
NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam)
End Function
Všetko ide fajn až na to, že funkcia GetScrollInfo vracia False a do i vyplni same 0 a funkcia SetScrollInfo tiež nenastavuje ten scrollbar aj keď dám tu pozíciu natvrdo.
Handlere som kontroloval a mali by byť správne. Taktiež sa vôbec pri horizontálnom scrollovani nevyvolá windows message 276, takže ak je to takto, tak sa k funkciam GetScroll a SetScroll vôbec ani nedostanem.
Ďakujem. Tak som to skúsil ale akosi to stále nefičí. Tu je trocha kódu:
V inicializacii User Controlsu mám takéto niečo:
saveHWnd = myGrid.hWnd
FhWnd = Filtre.hWnd
OldWindowProc = SetWindowLong(myGrid.hWnd, GWL_WNDPROC, AddressOf NewWindowProc)
myGrid je deklarovany ako Private premenna typu TDBGrid v User Controlse a je napojená na Table1 vo forulari.
Filtre je komponenta na User Controlse typu TDBGrid
Public Type SCROLLINFO
cbSize As Integer
fMask As Integer
nMin As Integer
nMax As Integer
nPage As Integer
nPos As Integer
nTrackPos As Integer
End Type
NewWindowProc mám definovanú v module takto nejako:
Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim i As SCROLLINFO
If msg = 276 Then
i.cbSize = Len(i)
i.fMask = SIF_ALL
GetScrollInfo hWnd, SBS_HORZ, i
SetScrollInfo FhWnd, SBS_HORZ, i, True
End If
NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam)
End Function
Všetko ide fajn až na to, že funkcia GetScrollInfo vracia False a do i vyplni same 0 a funkcia SetScrollInfo tiež nenastavuje ten scrollbar aj keď dám tu pozíciu natvrdo.
Handlere som kontroloval a mali by byť správne. Taktiež sa vôbec pri horizontálnom scrollovani nevyvolá windows message 276, takže ak je to takto, tak sa k funkciam GetScroll a SetScroll vôbec ani nedostanem.
Citovat příspěvek