Can I see your code for it ?
Sorry for the dialog
oApp() you can erase it
TScrWnd() is a class
BuildMenu() you can erase it
oIcon you can erase it
this is the code right
this is the TScrWnd() class
Sorry for the dialog
oApp() you can erase it
TScrWnd() is a class
BuildMenu() you can erase it
oIcon you can erase it
this is the code right
STATIC oWndMain,oScrWnd
FUNCTION MAIN()
DEFINE WINDOW oWndMain ;
TITLE "BEACH"
DEFINE BUTTONBAR oBar _3D SIZE 42, 50 OF oWndMain 2007 //36, 40
DEFINE BUTTON OF oBar ;
ACTION BEACH() NOBORDER
ACTIVATE WINDOW oWndMain
RETURN NIL
FUNCTION BEACH
Local oDlg
Local aClient := GetClientRect (oWndMain:hWnd )
DEFINE DIALOG oDlg
oDlg:nTop = oWndMain:oBar:nHeight-1
oDlg:nLeft = 0
oDlg:nBottom = aClient[3] - 1
oDlg:nRight = aClient[4]
oDlg:nStyle = nOR( WS_CHILD, 4 )
oDlg:nStyle:= NOR( oDlg:nStyle, WS_VSCROLL )
oDlg:nStyle:= NOR( oDlg:nStyle, WS_HSCROLL )
oDlg:SetColor(0,RGB(143,172,230))
oWndMain:oClient := oDlg
ACTIVATE DIALOG oDlg ;
ON INIT oScrWnd:=TScrWnd():New(oDlg,1,900,1,100+950)this is the TScrWnd() class
#include "FiveWin.ch"
#ifndef TRUE
#define TRUE .T.
#define FALSE .F.
#endif
#define D_WIDTH 4
#define D_HEIGHT 13
CLASS TScrWnd
DATA oWnd
DATA nVPos,nHPos
METHOD New( oWnd,nV1,nV2,nH1,nH2 ) CONSTRUCTOR
METHOD SetScroll( nV1,nV2,nH1,nH2 )
//-*------------------------------------------------------------
METHOD VScroll()
METHOD VScrollThumb()
METHOD VScrollTrack()
METHOD VScrollPgDown()
METHOD VScrollPgUp()
//-*-----------------------------
METHOD HScroll()
METHOD HScrollThumb()
METHOD HScrollTrack()
METHOD HScrollPgDown()
METHOD HScrollPgUp()
ENDCLASS
METHOD New( oWnd,nV1,nV2,nH1,nH2 ) CLASS TScrWnd
::nVPos := 0
::nHPos := 0
::oWnd := oWnd
DEFINE SCROLLBAR ::oWnd:oVScroll VERTICAL OF ::oWnd
DEFINE SCROLLBAR ::oWnd:oHScroll HORIZONTAL OF ::oWnd
::SetScroll( nV1,nV2,nH1,nH2 )
::oWnd:bMouseWheel = { | nKey, nDelta, nXPos, nYPos |If( nDelta < 0, ::oWnd:oVScroll:GoDown(), ::oWnd:oVScroll:GoUp() ) }
RETURN Self
METHOD SetScroll( nV1,nV2,nH1,nH2 ) CLASS TScrWnd
LOCAL aCoors1:={},aCoors2:={}
//--------------------------------------------------
//-* Vertical Scroll Bar
// ? ::oVSCroll=NIL
if ::oWnd:oVScroll != NIL
// ? nV1,nV2
::oWnd:oVScroll:SetRange( nV1,nV2 )
::nVPos := ::oWnd:oVScroll:GetPos()
::oWnd:oVScroll:bGoDown := {|| ::VScroll() }
::oWnd:oVScroll:bGoUp := {|| ::VScroll() }
::oWnd:oVScroll:bPageUp := {|| ::VScrollPgUp() }
::oWnd:oVScroll:bPageDown := {|| ::VScrollPgDown() }
::oWnd:oVScroll:bGoTop := {|| ::VScroll() }
::oWnd:oVScroll:bGoBottom := {|| ::VScroll() }
::oWnd:oVScroll:nPgStep := 10
//::lReDraw := TRUE
::oWnd:oVScroll:bPos := {|nPos| ::VScrollThumb(nPos) }
::oWnd:oVScroll:bTrack := {|nPos| ::VScrollTrack(nPos) }
endif
//--------------------------------------------------
//-* Horizontal Scroll Bar
if ::oWnd:oHScroll != NIL
::oWnd:oHScroll:SetRange( nH1,nH2 )
::nHPos := ::oWnd:oHScroll:GetPos()
::oWnd:oHScroll:bGoDown := {|| ::HScroll() }
::oWnd:oHScroll:bGoUp := {|| ::HScroll() }
::oWnd:oHScroll:bPageUp := {|| ::HScrollPgUp() }
::oWnd:oHScroll:bPageDown := {|| ::HScrollPgDown() }
::oWnd:oHScroll:bGoTop := {|| ::HScroll() }
::oWnd:oHScroll:bGoBottom := {|| ::HScroll() }
::oWnd:oHScroll:nPgStep := 10
//::lReDraw := TRUE
::oWnd:oHScroll:bPos := {|nPos| ::HScrollThumb(nPos) }
::oWnd:oHScroll:bTrack := {|nPos| ::HScrollTrack(nPos) }
endif
//::bKeyChar := {|nKey,nFlags| ScrollKey(nKey) }
//--------------------------------------------------
RETURN( NIL )
//STATIC FUNCTION ScrollKey(nKey)
//MsgInfo( "Key : "+str(nKey,10) )
//if nKey == K_ENTER
// goMainDlg:End()
// lRetVal := TRUE
//endif
//RETURN( NIL )
//=================================================================
//-* Vertical Scroll Bar
METHOD VScroll() CLASS TScrWnd
LOCAL nNewPos
if ::nVPos >= ::oWnd:oVScroll:nMin ;
.and. ::nVPos <= ::oWnd:oVScroll:nMax
nNewPos := ::oWnd:oVScroll:GetPos()
SysRefresh()
ScrollWindow( ::oWnd:hWnd, 0, ;
( ::nVPos-nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oWnd:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollThumb(nNewPos) CLASS TScrWnd
if ::nVPos >= ::oWnd:oVScroll:nMin ;
.and. ::nVPos <= ::oWnd:oVScroll:nMax
::oWnd:oVScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, 0, ;
(::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oWnd:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollTrack(nNewPos) CLASS TScrWnd
if ::nVPos >= ::oWnd:oVScroll:nMin ;
.and. ::nVPos <= ::oWnd:oVScroll:nMax
::oWnd:oVScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, 0, ;
(::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oWnd:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollPgDown() CLASS TScrWnd
LOCAL nNewPos
if ::nVPos < ::oWnd:oVScroll:nMax
nNewPos := ::nVPos + ::oWnd:oVScroll:nPgStep
nNewPos := iif(nNewPos > ::oWnd:oVScroll:nMax, ::oWnd:oVScroll:nMax, nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, 0, ;
( ::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oWnd:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollPgUp() CLASS TScrWnd
LOCAL nNewPos
if ::nVPos > ::oWnd:oVScroll:nMin
nNewPos := ::nVPos - ::oWnd:oVScroll:nPgStep
nNewPos := iif(nNewPos < ::oWnd:oVScroll:nMin,::oWnd:oVScroll:nMin,nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, 0, ;
( ::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oWnd:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
//=================================================================
//-* Horizontal Scroll Bar
METHOD HScroll() CLASS TScrWnd
LOCAL nNewPos
if ::nHPos >= ::oWnd:oHScroll:nMin ;
.and. ::nHPos <= ::oWnd:oHScroll:nMax
nNewPos := ::oWnd:oHScroll:GetPos()
SysRefresh()
ScrollWindow( ::oWnd:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oWnd:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollThumb(nNewPos) CLASS TScrWnd
if ::nHPos >= ::oWnd:oHScroll:nMin ;
.and. ::nHPos <= ::oWnd:oHScroll:nMax
::oWnd:oHScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oWnd:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollTrack(nNewPos) CLASS TScrWnd
if ::nHPos >= ::oWnd:oHScroll:nMin ;
.and. ::nHPos <= ::oWnd:oHScroll:nMax
::oWnd:oHScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oWnd:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollPgDown() CLASS TScrWnd
LOCAL nNewPos
if ::nHPos < ::oWnd:oHScroll:nMax
nNewPos := ::nHPos + ::oWnd:oHScroll:nPgStep
nNewPos := iif(nNewPos > ::oWnd:oHScroll:nMax, ::oWnd:oHScroll:nMax, nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, ;
( ::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oWnd:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollPgUp() CLASS TScrWnd
LOCAL nNewPos
if ::nHPos > ::oWnd:oHScroll:nMin
nNewPos := ::nHPos - ::oWnd:oHScroll:nPgStep
nNewPos := iif(nNewPos < ::oWnd:oHScroll:nMin,::oWnd:oHScroll:nMin,nNewPos)
SysRefresh()
ScrollWindow( ::oWnd:hWnd, ;
( ::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oWnd:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )Best Regards, Saludos
Falconi Silvio
Falconi Silvio