Page 1 of 2
SCROLL en WINDOW
Posted:
Tue Mar 06, 2007 6:50 am
by wmormar
Amigos,
Alguien podria auxiliarme para hacer funcionar los scroll en Window.
Tengo lo siguiente sin funcionar:
- Code: Select all Expand view
DEFINE WINDOW oWnd MDI TITLE "Sin funcionar" VSCROLL HSCROLL
ACTIVATE WINDOW oWnd
Si creo una ventana hija, y la muevo al final de la ventana, pues si aparecen los scroles, pero al moverlo, la ventana hija no sube.
Saludos y gracias de antemano
Posted:
Tue Mar 06, 2007 12:14 pm
by Rossine
Olá William,
Segue abaixo exemplos para usar scroll em uma Window e Dialog.
- Code: Select all Expand view
// Testing how to scroll a window with its contents
#include "FiveWin.ch"
#define D_WIDTH 4
#define D_HEIGHT 13
FUNCTION Main()
LOCAL oWnd,oScrWnd
LOCAL cGet0101 := space(10), ; //Row 1
cGet0102 := space(10), ;
cGet0103 := space(10), ;
cGet0104 := space(10), ;
cGet0105 := space(10), ;
cGet0201 := space(10), ; //Row 2
cGet0202 := space(10), ;
cGet0203 := space(10), ;
cGet0204 := space(10), ;
cGet0205 := space(10), ;
cGet0301 := space(10), ; //Row 3
cGet0302 := space(10), ;
cGet0303 := space(10), ;
cGet0304 := space(10), ;
cGet0305 := space(10), ;
cGet0401 := space(10), ; //Row 4
cGet0402 := space(10), ;
cGet0403 := space(10), ;
cGet0404 := space(10), ;
cGet0405 := space(10), ;
cGet0501 := space(10), ; //Row 5
cGet0502 := space(10), ;
cGet0503 := space(10), ;
cGet0504 := space(10), ;
cGet0505 := space(10), ;
cGet0601 := space(10), ; //Row 6
cGet0602 := space(10), ;
cGet0603 := space(10), ;
cGet0604 := space(10), ;
cGet0605 := space(10), ;
cGet0701 := space(10), ; //Row 7
cGet0702 := space(10), ;
cGet0703 := space(10), ;
cGet0704 := space(10), ;
cGet0705 := space(10), ;
cGet0801 := space(10), ; //Row 8
cGet0802 := space(10), ;
cGet0803 := space(10), ;
cGet0804 := space(10), ;
cGet0805 := space(10), ;
cGet0901 := space(10), ; //Row 9
cGet0902 := space(10), ;
cGet0903 := space(10), ;
cGet0904 := space(10), ;
cGet0905 := space(10), ;
cGet1001 := space(10), ; //Row 10
cGet1002 := space(10), ;
cGet1003 := space(10), ;
cGet1004 := space(10), ;
cGet1005 := space(10), ;
cGet1101 := space(10), ; //Row 11
cGet1102 := space(10), ;
cGet1103 := space(10), ;
cGet1104 := space(10), ;
cGet1105 := space(10)
define window oWnd from 0, 0 TO 25, 70 ;
title "Scroll Window" ;
vscroll hscroll
@ 9,17 bitmap file "\fwh\bitmaps\pic1.bmp" of oWnd size 120,148 adjust
@ 9,32 bitmap file "\fwh\bitmaps\pic2.bmp" of oWnd size 120,148 adjust
@ 9,47 bitmap file "\fwh\bitmaps\pic3.bmp" of oWnd size 120,148 adjust
@ 9,62 bitmap file "\fwh\bitmaps\pic4.bmp" of oWnd size 120,148 adjust
@ 9,77 bitmap file "\fwh\bitmaps\pic5.bmp" of oWnd size 120,148 adjust
@ 21*13,02*8 say "Customer " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 23*13,02*8 say "P.O. # " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 25*13,02*8 say "Style No." of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 27*13,02*8 say "Fabrics " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 29*13,02*8 say "Fob " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 31*13,02*8 say "Q'TY " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 33*13,02*8 say "DEL. " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 35*13,02*8 say "MAKER " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 37*13,02*8 say "QTA " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 39*13,02*8 say "SIZE " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 41*13,02*8 say "Size B/D " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 43*13,02*8 say "REMARKS " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,17*8 say "Venture " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,32*8 say "Sears " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,47*8 say "Kohl's " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,62*8 say "Kiss " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,77*8 say "K-MART " of oWnd update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
//-* Row 1
@ 23*13,17*8 get cGet0101 size 120,26 of oWnd update pixel
@ 23*13,32*8 get cGet0102 size 120,26 of oWnd update pixel
@ 23*13,47*8 get cGet0103 size 120,26 of oWnd update pixel
@ 23*13,62*8 get cGet0104 size 120,26 of oWnd update pixel
@ 23*13,77*8 get cGet0105 size 120,26 of oWnd update pixel
//-* Row 2
@ 25*13,17*8 get cGet0201 size 120,26 of oWnd update pixel
@ 25*13,32*8 get cGet0202 size 120,26 of oWnd update pixel
@ 25*13,47*8 get cGet0203 size 120,26 of oWnd update pixel
@ 25*13,62*8 get cGet0204 size 120,26 of oWnd update pixel
@ 25*13,77*8 get cGet0205 size 120,26 of oWnd update pixel
//-* Row 3
@ 27*13,17*8 get cGet0301 size 120,26 of oWnd update pixel
@ 27*13,32*8 get cGet0302 size 120,26 of oWnd update pixel
@ 27*13,47*8 get cGet0303 size 120,26 of oWnd update pixel
@ 27*13,62*8 get cGet0304 size 120,26 of oWnd update pixel
@ 27*13,77*8 get cGet0305 size 120,26 of oWnd update pixel
//-* Row 4
@ 29*13,17*8 get cGet0401 size 120,26 of oWnd update pixel
@ 29*13,32*8 get cGet0402 size 120,26 of oWnd update pixel
@ 29*13,47*8 get cGet0403 size 120,26 of oWnd update pixel
@ 29*13,62*8 get cGet0404 size 120,26 of oWnd update pixel
@ 29*13,77*8 get cGet0405 size 120,26 of oWnd update pixel
//-* Row 5
@ 31*13,17*8 get cGet0501 size 120,26 of oWnd update pixel
@ 31*13,32*8 get cGet0502 size 120,26 of oWnd update pixel
@ 31*13,47*8 get cGet0503 size 120,26 of oWnd update pixel
@ 31*13,62*8 get cGet0504 size 120,26 of oWnd update pixel
@ 31*13,77*8 get cGet0505 size 120,26 of oWnd update pixel
//-* Row 6
@ 33*13,17*8 get cGet0601 size 120,26 of oWnd update pixel
@ 33*13,32*8 get cGet0602 size 120,26 of oWnd update pixel
@ 33*13,47*8 get cGet0603 size 120,26 of oWnd update pixel
@ 33*13,62*8 get cGet0604 size 120,26 of oWnd update pixel
@ 33*13,77*8 get cGet0605 size 120,26 of oWnd update pixel
//-* Row 7
@ 35*13,17*8 get cGet0701 size 120,26 of oWnd update pixel
@ 35*13,32*8 get cGet0702 size 120,26 of oWnd update pixel
@ 35*13,47*8 get cGet0703 size 120,26 of oWnd update pixel
@ 35*13,62*8 get cGet0704 size 120,26 of oWnd update pixel
@ 35*13,77*8 get cGet0705 size 120,26 of oWnd update pixel
//-* Row 8
@ 37*13,17*8 get cGet0801 size 120,26 of oWnd update pixel
@ 37*13,32*8 get cGet0802 size 120,26 of oWnd update pixel
@ 37*13,47*8 get cGet0803 size 120,26 of oWnd update pixel
@ 37*13,62*8 get cGet0804 size 120,26 of oWnd update pixel
@ 37*13,77*8 get cGet0805 size 120,26 of oWnd update pixel
//-* Row 9
@ 39*13,17*8 get cGet0901 size 120,26 of oWnd update pixel
@ 39*13,32*8 get cGet0902 size 120,26 of oWnd update pixel
@ 39*13,47*8 get cGet0903 size 120,26 of oWnd update pixel
@ 39*13,62*8 get cGet0904 size 120,26 of oWnd update pixel
@ 39*13,77*8 get cGet0905 size 120,26 of oWnd update pixel
//-* Row 10
@ 41*13,17*8 get cGet1001 size 120,26 of oWnd update pixel
@ 41*13,32*8 get cGet1002 size 120,26 of oWnd update pixel
@ 41*13,47*8 get cGet1003 size 120,26 of oWnd update pixel
@ 41*13,62*8 get cGet1004 size 120,26 of oWnd update pixel
@ 41*13,77*8 get cGet1005 size 120,26 of oWnd update pixel
//-* Row 11
@ 43*13,17*8 get cGet1101 size 120,26 of oWnd update pixel
@ 43*13,32*8 get cGet1102 size 120,26 of oWnd update pixel
@ 43*13,47*8 get cGet1103 size 120,26 of oWnd update pixel
@ 43*13,62*8 get cGet1104 size 120,26 of oWnd update pixel
@ 43*13,77*8 get cGet1105 size 120,26 of oWnd update pixel
@ 50,20 button "&Ok" size 80,20 of oWnd ;
action (MsgInfo("You click OK button!"),oWnd:End())
@ 50,40 button "&Cancel" size 80,20 of oWnd ;
action (MsgInfo("You click Cancel button!"),oWnd:End())
ACTIVATE WINDOW oWnd ;
ON INIT ( TScrWnd():New(oWnd,1,40,1,70) )
RETURN( NIL )
//============================================================================
// FileName : SCROLL.PRG
// Purpose : Windows Scroll Class
// Author : Eric Yang
// Update History :
// Date Contents
// ---------- ---------------------------------------------------------------
// 1997.02.01
//
//============================================================================
#include "FiveWin.ch"
#ifndef TRUE
#define TRUE .T.
#define FALSE .F.
#endif
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
::SetScroll( nV1,nV2,nH1,nH2 )
RETURN Self
METHOD SetScroll( nV1,nV2,nH1,nH2 ) CLASS TScrWnd
LOCAL aCoors1:={},aCoors2:={}
//--------------------------------------------------
//-* Vertical Scroll Bar
// ? ::oWnd: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
//::oWnd:oVScroll: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
//::oWnd:oHScroll:lReDraw := TRUE
::oWnd:oHScroll:bPos := {|nPos| ::HScrollThumb(nPos) }
::oWnd:oHScroll:bTrack := {|nPos| ::HScrollTrack(nPos) }
endif
//::oWnd: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 )
//=* End of File =================================================
procedure AppSys // Xbase++ requirement
return
- Code: Select all Expand view
// Testing how to scroll a dialog with its contents
#include "FiveWin.ch"
#define D_WIDTH 4
#define D_HEIGHT 13
FUNCTION Main()
LOCAL oDlg
LOCAL cGet0101 := space(10), ; //Row 1
cGet0102 := space(10), ;
cGet0103 := space(10), ;
cGet0104 := space(10), ;
cGet0105 := space(10), ;
cGet0201 := space(10), ; //Row 2
cGet0202 := space(10), ;
cGet0203 := space(10), ;
cGet0204 := space(10), ;
cGet0205 := space(10), ;
cGet0301 := space(10), ; //Row 3
cGet0302 := space(10), ;
cGet0303 := space(10), ;
cGet0304 := space(10), ;
cGet0305 := space(10), ;
cGet0401 := space(10), ; //Row 4
cGet0402 := space(10), ;
cGet0403 := space(10), ;
cGet0404 := space(10), ;
cGet0405 := space(10), ;
cGet0501 := space(10), ; //Row 5
cGet0502 := space(10), ;
cGet0503 := space(10), ;
cGet0504 := space(10), ;
cGet0505 := space(10), ;
cGet0601 := space(10), ; //Row 6
cGet0602 := space(10), ;
cGet0603 := space(10), ;
cGet0604 := space(10), ;
cGet0605 := space(10), ;
cGet0701 := space(10), ; //Row 7
cGet0702 := space(10), ;
cGet0703 := space(10), ;
cGet0704 := space(10), ;
cGet0705 := space(10), ;
cGet0801 := space(10), ; //Row 8
cGet0802 := space(10), ;
cGet0803 := space(10), ;
cGet0804 := space(10), ;
cGet0805 := space(10), ;
cGet0901 := space(10), ; //Row 9
cGet0902 := space(10), ;
cGet0903 := space(10), ;
cGet0904 := space(10), ;
cGet0905 := space(10), ;
cGet1001 := space(10), ; //Row 10
cGet1002 := space(10), ;
cGet1003 := space(10), ;
cGet1004 := space(10), ;
cGet1005 := space(10), ;
cGet1101 := space(10), ; //Row 11
cGet1102 := space(10), ;
cGet1103 := space(10), ;
cGet1104 := space(10), ;
cGet1105 := space(10)
define dialog oDlg from 0, 0 TO 25, 70 ;
title "Scroll dialog" ;
Style nor( WS_VSCROLL, WS_HSCROLL )
@ 9,17 bitmap file "\fwh\bitmaps\pic1.bmp" of oDlg size 120,148 adjust
@ 9,32 bitmap file "\fwh\bitmaps\pic2.bmp" of oDlg size 120,148 adjust
@ 9,47 bitmap file "\fwh\bitmaps\pic3.bmp" of oDlg size 120,148 adjust
@ 9,62 bitmap file "\fwh\bitmaps\pic4.bmp" of oDlg size 120,148 adjust
@ 9,77 bitmap file "\fwh\bitmaps\pic5.bmp" of oDlg size 120,148 adjust
@ 21*13,02*8 say "Customer " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 23*13,02*8 say "P.O. # " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 25*13,02*8 say "Style No." of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 27*13,02*8 say "Fabrics " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 29*13,02*8 say "Fob " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 31*13,02*8 say "Q'TY " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 33*13,02*8 say "DEL. " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 35*13,02*8 say "MAKER " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 37*13,02*8 say "QTA " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 39*13,02*8 say "SIZE " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 41*13,02*8 say "Size B/D " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 43*13,02*8 say "REMARKS " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,17*8 say "Venture " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,32*8 say "Sears " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,47*8 say "Kohl's " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,62*8 say "Kiss " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
@ 21*13,77*8 say "K-MART " of oDlg update color CLR_BLACK,CLR_WHITE size 120,26 border pixel
//-* Row 1
@ 23*13,17*8 get cGet0101 size 120,26 of oDlg update pixel
@ 23*13,32*8 get cGet0102 size 120,26 of oDlg update pixel
@ 23*13,47*8 get cGet0103 size 120,26 of oDlg update pixel
@ 23*13,62*8 get cGet0104 size 120,26 of oDlg update pixel
@ 23*13,77*8 get cGet0105 size 120,26 of oDlg update pixel
//-* Row 2
@ 25*13,17*8 get cGet0201 size 120,26 of oDlg update pixel
@ 25*13,32*8 get cGet0202 size 120,26 of oDlg update pixel
@ 25*13,47*8 get cGet0203 size 120,26 of oDlg update pixel
@ 25*13,62*8 get cGet0204 size 120,26 of oDlg update pixel
@ 25*13,77*8 get cGet0205 size 120,26 of oDlg update pixel
//-* Row 3
@ 27*13,17*8 get cGet0301 size 120,26 of oDlg update pixel
@ 27*13,32*8 get cGet0302 size 120,26 of oDlg update pixel
@ 27*13,47*8 get cGet0303 size 120,26 of oDlg update pixel
@ 27*13,62*8 get cGet0304 size 120,26 of oDlg update pixel
@ 27*13,77*8 get cGet0305 size 120,26 of oDlg update pixel
//-* Row 4
@ 29*13,17*8 get cGet0401 size 120,26 of oDlg update pixel
@ 29*13,32*8 get cGet0402 size 120,26 of oDlg update pixel
@ 29*13,47*8 get cGet0403 size 120,26 of oDlg update pixel
@ 29*13,62*8 get cGet0404 size 120,26 of oDlg update pixel
@ 29*13,77*8 get cGet0405 size 120,26 of oDlg update pixel
//-* Row 5
@ 31*13,17*8 get cGet0501 size 120,26 of oDlg update pixel
@ 31*13,32*8 get cGet0502 size 120,26 of oDlg update pixel
@ 31*13,47*8 get cGet0503 size 120,26 of oDlg update pixel
@ 31*13,62*8 get cGet0504 size 120,26 of oDlg update pixel
@ 31*13,77*8 get cGet0505 size 120,26 of oDlg update pixel
//-* Row 6
@ 33*13,17*8 get cGet0601 size 120,26 of oDlg update pixel
@ 33*13,32*8 get cGet0602 size 120,26 of oDlg update pixel
@ 33*13,47*8 get cGet0603 size 120,26 of oDlg update pixel
@ 33*13,62*8 get cGet0604 size 120,26 of oDlg update pixel
@ 33*13,77*8 get cGet0605 size 120,26 of oDlg update pixel
//-* Row 7
@ 35*13,17*8 get cGet0701 size 120,26 of oDlg update pixel
@ 35*13,32*8 get cGet0702 size 120,26 of oDlg update pixel
@ 35*13,47*8 get cGet0703 size 120,26 of oDlg update pixel
@ 35*13,62*8 get cGet0704 size 120,26 of oDlg update pixel
@ 35*13,77*8 get cGet0705 size 120,26 of oDlg update pixel
//-* Row 8
@ 37*13,17*8 get cGet0801 size 120,26 of oDlg update pixel
@ 37*13,32*8 get cGet0802 size 120,26 of oDlg update pixel
@ 37*13,47*8 get cGet0803 size 120,26 of oDlg update pixel
@ 37*13,62*8 get cGet0804 size 120,26 of oDlg update pixel
@ 37*13,77*8 get cGet0805 size 120,26 of oDlg update pixel
//-* Row 9
@ 39*13,17*8 get cGet0901 size 120,26 of oDlg update pixel
@ 39*13,32*8 get cGet0902 size 120,26 of oDlg update pixel
@ 39*13,47*8 get cGet0903 size 120,26 of oDlg update pixel
@ 39*13,62*8 get cGet0904 size 120,26 of oDlg update pixel
@ 39*13,77*8 get cGet0905 size 120,26 of oDlg update pixel
//-* Row 10
@ 41*13,17*8 get cGet1001 size 120,26 of oDlg update pixel
@ 41*13,32*8 get cGet1002 size 120,26 of oDlg update pixel
@ 41*13,47*8 get cGet1003 size 120,26 of oDlg update pixel
@ 41*13,62*8 get cGet1004 size 120,26 of oDlg update pixel
@ 41*13,77*8 get cGet1005 size 120,26 of oDlg update pixel
//-* Row 11
@ 43*13,17*8 get cGet1101 size 120,26 of oDlg update pixel
@ 43*13,32*8 get cGet1102 size 120,26 of oDlg update pixel
@ 43*13,47*8 get cGet1103 size 120,26 of oDlg update pixel
@ 43*13,62*8 get cGet1104 size 120,26 of oDlg update pixel
@ 43*13,77*8 get cGet1105 size 120,26 of oDlg update pixel
@ 50,20 button "&Ok" size 80,20 of oDlg ;
action (MsgInfo("You click OK button!"),oDlg:End())
@ 50,40 button "&Cancel" size 80,20 of oDlg ;
action (MsgInfo("You click Cancel button!"),oDlg:End())
ACTIVATE dialog oDlg ;
ON INIT ( TScrDlg():New(oDlg,1,100,1,400) )
RETURN( NIL )
//============================================================================
// FileName : SCROLL.PRG
// Purpose : dialog Scroll Class
// Author : Eric Yang
// Update History :
// Date Contents
// ---------- ---------------------------------------------------------------
// 1997.02.01
//
//============================================================================
#include "FiveWin.ch"
#ifndef TRUE
#define TRUE .T.
#define FALSE .F.
#endif
CLASS TScrDlg
DATA oDlg
DATA nVPos,nHPos
METHOD New( oDlg,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( oDlg,nV1,nV2,nH1,nH2 ) CLASS TScrDlg
::nVPos := 0
::nHPos := 0
::oDlg := oDlg
::SetScroll( nV1,nV2,nH1,nH2 )
RETURN Self
METHOD SetScroll( nV1,nV2,nH1,nH2 ) CLASS TScrDlg
LOCAL aCoors1:={},aCoors2:={}
//--------------------------------------------------
//-* Vertical Scroll Bar
// ? ::oDlg:oVSCroll=NIL
if ::oDlg:oVScroll != NIL
// ? nV1,nV2
::oDlg:oVScroll:SetRange( nV1,nV2 )
::nVPos := ::oDlg:oVScroll:GetPos()
::oDlg:oVScroll:bGoDown := {|| ::VScroll() }
::oDlg:oVScroll:bGoUp := {|| ::VScroll() }
::oDlg:oVScroll:bPageUp := {|| ::VScrollPgUp() }
::oDlg:oVScroll:bPageDown := {|| ::VScrollPgDown() }
::oDlg:oVScroll:bGoTop := {|| ::VScroll() }
::oDlg:oVScroll:bGoBottom := {|| ::VScroll() }
::oDlg:oVScroll:nPgStep := 10
//::oDlg:oVScroll:lReDraw := TRUE
::oDlg:oVScroll:bPos := {|nPos| ::VScrollThumb(nPos) }
::oDlg:oVScroll:bTrack := {|nPos| ::VScrollTrack(nPos) }
endif
//--------------------------------------------------
//-* Horizontal Scroll Bar
if ::oDlg:oHScroll != NIL
::oDlg:oHScroll:SetRange( nH1,nH2 )
::nHPos := ::oDlg:oHScroll:GetPos()
::oDlg:oHScroll:bGoDown := {|| ::HScroll() }
::oDlg:oHScroll:bGoUp := {|| ::HScroll() }
::oDlg:oHScroll:bPageUp := {|| ::HScrollPgUp() }
::oDlg:oHScroll:bPageDown := {|| ::HScrollPgDown() }
::oDlg:oHScroll:bGoTop := {|| ::HScroll() }
::oDlg:oHScroll:bGoBottom := {|| ::HScroll() }
::oDlg:oHScroll:nPgStep := 10
//::oDlg:oHScroll:lReDraw := TRUE
::oDlg:oHScroll:bPos := {|nPos| ::HScrollThumb(nPos) }
::oDlg:oHScroll:bTrack := {|nPos| ::HScrollTrack(nPos) }
endif
//::oDlg: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 TScrDlg
LOCAL nNewPos
if ::nVPos >= ::oDlg:oVScroll:nMin ;
.and. ::nVPos <= ::oDlg:oVScroll:nMax
nNewPos := ::oDlg:oVScroll:GetPos()
SysRefresh()
ScrollWindow( ::oDlg:hWnd, 0, ;
( ::nVPos-nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oDlg:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollThumb(nNewPos) CLASS TScrDlg
if ::nVPos >= ::oDlg:oVScroll:nMin ;
.and. ::nVPos <= ::oDlg:oVScroll:nMax
::oDlg:oVScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, 0, ;
(::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oDlg:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollTrack(nNewPos) CLASS TScrDlg
if ::nVPos >= ::oDlg:oVScroll:nMin ;
.and. ::nVPos <= ::oDlg:oVScroll:nMax
::oDlg:oVScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, 0, ;
(::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oDlg:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollPgDown() CLASS TScrDlg
LOCAL nNewPos
if ::nVPos < ::oDlg:oVScroll:nMax
nNewPos := ::nVPos + ::oDlg:oVScroll:nPgStep
nNewPos := iif(nNewPos > ::oDlg:oVScroll:nMax, ::oDlg:oVScroll:nMax, nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, 0, ;
( ::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oDlg:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
METHOD VScrollPgUp() CLASS TScrDlg
LOCAL nNewPos
if ::nVPos > ::oDlg:oVScroll:nMin
nNewPos := ::nVPos - ::oDlg:oVScroll:nPgStep
nNewPos := iif(nNewPos < ::oDlg:oVScroll:nMin,::oDlg:oVScroll:nMin,nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, 0, ;
( ::nVPos - nNewPos )*D_HEIGHT, ;
0 , GetClientRect(::oDlg:hWnd) )
::nVPos := nNewPos
endif
RETURN( NIL )
//=================================================================
//-* Horizontal Scroll Bar
METHOD HScroll() CLASS TScrDlg
LOCAL nNewPos
if ::nHPos >= ::oDlg:oHScroll:nMin ;
.and. ::nHPos <= ::oDlg:oHScroll:nMax
nNewPos := ::oDlg:oHScroll:GetPos()
SysRefresh()
ScrollWindow( ::oDlg:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oDlg:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollThumb(nNewPos) CLASS TScrDlg
if ::nHPos >= ::oDlg:oHScroll:nMin ;
.and. ::nHPos <= ::oDlg:oHScroll:nMax
::oDlg:oHScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oDlg:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollTrack(nNewPos) CLASS TScrDlg
if ::nHPos >= ::oDlg:oHScroll:nMin ;
.and. ::nHPos <= ::oDlg:oHScroll:nMax
::oDlg:oHScroll:SetPos(nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, ;
(::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oDlg:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollPgDown() CLASS TScrDlg
LOCAL nNewPos
if ::nHPos < ::oDlg:oHScroll:nMax
nNewPos := ::nHPos + ::oDlg:oHScroll:nPgStep
nNewPos := iif(nNewPos > ::oDlg:oHScroll:nMax, ::oDlg:oHScroll:nMax, nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, ;
( ::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oDlg:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
METHOD HScrollPgUp() CLASS TScrDlg
LOCAL nNewPos
if ::nHPos > ::oDlg:oHScroll:nMin
nNewPos := ::nHPos - ::oDlg:oHScroll:nPgStep
nNewPos := iif(nNewPos < ::oDlg:oHScroll:nMin,::oDlg:oHScroll:nMin,nNewPos)
SysRefresh()
ScrollWindow( ::oDlg:hWnd, ;
( ::nHPos - nNewPos )*D_WIDTH,0, ;
0 , GetClientRect(::oDlg:hWnd) )
::nHPos := nNewPos
endif
RETURN( NIL )
//=* End of File =================================================
procedure AppSys // Xbase++ requirement
return
Abraços,
Rossine.
Posted:
Tue Mar 06, 2007 3:26 pm
by wmormar
Rossine,
Las datas oVScroll, oHScroll, no existen en los MDI.
Habrá alguna solución al respecto?
Gracias de antemano.
Posted:
Tue Mar 06, 2007 3:48 pm
by wmormar
Rossine,
Sorry, era error mio, no inicializaba la variable oWnd.
Pero, fijate que muevo las ventanas child y no funcionan los scrolles.
Adjunto una imagen.
Precisamente en la imagen se observa la ventana child, pero esta no se mueve con los scroll.
Gracias de antemano por la ayuda prestada
Posted:
Tue Nov 06, 2007 11:49 am
by A&C
AMIGOS MIOS ::
LA FUNCTION PARA EL SCROLL,, EN WINDOW Y EN DIALOG,, FUNCIONAN OK
EL UNICO DETALLE QUE LE QUEDA ,, ES LA RUEDA DEL MOUSE,,, NO FUNCIONA CON ESTA CLASE,, ALGUIEN SABE COMO HACERLA FUNCIONAR..
GRACIAS
Posted:
Thu Nov 08, 2007 2:33 pm
by A&C
alguien sabe
Posted:
Fri Nov 09, 2007 2:57 am
by A&C
AL PARECER NADIE
Posted:
Fri Nov 09, 2007 7:57 am
by Antonio Linares
William,
La solución es muy simple y no hay que usar ninguna clase nueva
En la clase TWindow hay que incluir estos cambios: (los if ... que comprueban "TMDIFRAME")
- Code: Select all Expand view
if oVScroll != nil // When using VSCROLL clause
if bUp != nil
oVScroll:bGoUp = bUp
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oVScroll:bGoUp = { || ScrollWindow( ::oWndClient:hWnd, 0, 20, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
if bDown != nil
oVScroll:bGoDown = bDown
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oVScroll:bGoDown = { || ScrollWindow( ::oWndClient:hWnd, 0, -20, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
...
if oHScroll != nil // When using HSCROLL clause
if bLeft != nil
oHScroll:bGoUp = bLeft
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oHScroll:bGoUp = { || ScrollWindow( ::oWndClient:hWnd, 20, 0, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
if bRight != nil
oHScroll:bGoDown = bRight
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oHScroll:bGoDown = { || ScrollWindow( ::oWndClient:hWnd, -20, 0, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
...
Aqui tienes un ejemplo funcionando:
http://rapidshare.com/files/68462085/Wormar.zip.html
Posted:
Fri Nov 09, 2007 8:51 am
by wmormar
Antonio,
gracias, lo checo y aviso
saludos
Antonio Linares wrote:William,
La solución es muy simple y no hay que usar ninguna clase nueva
En la clase TWindow hay que incluir estos cambios: (los if ... que comprueban "TMDIFRAME")
- Code: Select all Expand view
if oVScroll != nil // When using VSCROLL clause
if bUp != nil
oVScroll:bGoUp = bUp
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oVScroll:bGoUp = { || ScrollWindow( ::oWndClient:hWnd, 0, 20, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
if bDown != nil
oVScroll:bGoDown = bDown
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oVScroll:bGoDown = { || ScrollWindow( ::oWndClient:hWnd, 0, -20, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
...
if oHScroll != nil // When using HSCROLL clause
if bLeft != nil
oHScroll:bGoUp = bLeft
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oHScroll:bGoUp = { || ScrollWindow( ::oWndClient:hWnd, 20, 0, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
if bRight != nil
oHScroll:bGoDown = bRight
else
if Upper( ::ClassName() ) == "TMDIFRAME"
oHScroll:bGoDown = { || ScrollWindow( ::oWndClient:hWnd, -20, 0, 0, GetClientRect( ::oWndClient:hWnd ) ), ReleaseCapture() }
endif
endif
...
Aqui tienes un ejemplo funcionando:
http://rapidshare.com/files/68462085/Wormar.zip.html
Posted:
Fri Nov 09, 2007 8:59 am
by Antonio Linares
William,
Hay un efecto colateral extraño al que hay que intentar buscarle solución:
La llamada a ReleaseCapture() la hago para evitar que el scrollbar se quede el ratón capturado cuando la barra desaparece. Pero al usar el ReleaseCapture() y luego clickar en el "ascensor" entonces se produce un extraño repintado no deseado.
La solución sería llamar a ReleaseCapture() solo cuando el scrollbar desaparece, pero desconozco si Windows nos notifica de ese evento.
A ver si encontramos la solución...
Posted:
Fri Nov 09, 2007 9:05 am
by wmormar
Antonio Linares wrote:William,
Hay un efecto colateral extraño al que hay que intentar buscarle solución:
La llamada a ReleaseCapture() la hago para evitar que el scrollbar se quede el ratón capturado cuando la barra desaparece. Pero al usar el ReleaseCapture() y luego clickar en el "ascensor" entonces se produce un extraño repintado no deseado.
La solución sería llamar a ReleaseCapture() solo cuando el scrollbar desaparece, pero desconozco si Windows nos notifica de ese evento.
A ver si encontramos la solución...
Antonio,
efectivamente, me di cuenta del pintado incorrecto. esperamos impacientes la solución. Mil gracias
Posted:
Fri Nov 09, 2007 9:10 am
by Antonio Linares
El ReleaseCapture() no le gusta nada a la barra de scroll, y sin usar ReleaseCapture() cuando la barra desaparece deja "pillado" el ratón, por lo menos en Vista
Posted:
Sat Nov 10, 2007 1:40 am
by A&C
Y REFERENTE A LA RUEDA DEL MOUSE,,, CON ESTOS CAMBIOS FUNCIONA O AUN NO .....
GRACIAS
Posted:
Sat Nov 10, 2007 6:40 am
by wmormar
Antonio,
lo dicho, esperamos impacientes la solución
gracias
Antonio Linares wrote:El ReleaseCapture() no le gusta nada a la barra de scroll, y sin usar ReleaseCapture() cuando la barra desaparece deja "pillado" el ratón, por lo menos en Vista
Posted:
Sat Nov 10, 2007 7:59 am
by Antonio Linares
A&C,
Un poco de paciencia que lo vamos a
revisar William,
Hemos estado haciendo muchas pruebas y nada aún. Seguimos intentando buscar una solución