Page 1 of 1

Antonio, es posible VScroll a un dialogo desde recursos ?

Posted: Sat Feb 17, 2007 3:01 am
by Raymundo Islas M.
Hola Antonio

- Se podra aplicar el TESTWSCR.PRG de la carpeta samples a un dialogo/folder con controles creados desde recursos ??

Motivo : Por X razon a veces me falta 1 o 2 datos y el espacio se me acabo, y tengo que crear otra pestaƱa de un folder, si se le pusiera el scroll vertical, seria simplemente fabuloso !!!!



- Y ya que ando con solicitudes alucinantes :wink: , sera posible incrustar un PreView dentro de un control en vez de una ventana ??

Motivo : En un modulo de configuracion de impresiones, si deseo ajustar las coordenadas de algun reporte, tengo que seleccionar el boton [Probar] para que me aparezca el PreView, si se pudiera llamar desde X funcion, se actualizaria al momento los ajustes en dicho control.


No se, quizas tome mucha Coca-Cola el dia de hoy 8)


Saludos

Posted: Sat Feb 17, 2007 6:43 am
by Rochinha
Hi

This is a code for scroll in dialogs modified for a Brazilian friend:

Code: Select all

// 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 "..\bitmaps\pic1.bmp" of oDlg size 120,148 adjust 
   @ 9,32 bitmap file "..\bitmaps\pic2.bmp" of oDlg size 120,148 adjust 
   @ 9,47 bitmap file "..\bitmaps\pic3.bmp" of oDlg size 120,148 adjust 
   @ 9,62 bitmap file "..\bitmaps\pic4.bmp" of oDlg size 120,148 adjust 
   @ 9,77 bitmap file "..\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,40,1,70) ) 

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 

Posted: Sat Feb 17, 2007 10:07 am
by Taiwan
Hello Rochinha,

Thanks your sample code.
It's working.

Regards,

Richard

Posted: Sat Feb 17, 2007 4:34 pm
by Raymundo Islas M.
Hola Rochinha

Muchas Gracias por tu pronta respuesta !! :D


Muito obrigado :!:

Saludos

Posted: Sat Feb 17, 2007 5:28 pm
by Raymundo Islas M.
Rochinha

Termine mis pruebas y...... funciono perfecto !!!!!

Muchas Gracias


Saludos

Posted: Sat Feb 17, 2007 5:44 pm
by Rochinha
Gracias

E gracias en nombre de mi amigo!

Posted: Fri Dec 12, 2008 11:49 pm
by JmGarcia
He probado con un dialogo desde recursos y no me funciona... no hace nada :roll: