Scroll de controles - un primer prototipo

Scroll de controles - un primer prototipo

Postby Antonio Linares » Wed Mar 01, 2006 12:02 am

Aqui podeis descargar un ejemplo de scroll de controles:
http://hyperupload.com/download/ed4de01 ... l.zip.html

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jlcapel » Wed Mar 01, 2006 7:41 am

Antonio,

Estás que te sales!!

Saludos,
José Luis Capel :D
User avatar
jlcapel
 
Posts: 229
Joined: Wed Oct 12, 2005 5:32 pm
Location: Valencia - España

Postby Antonio Linares » Wed Mar 01, 2006 7:56 am

Jose Luis,

La cuestión es pensar bien donde implementarlo. Creo que se debe implementar en la clase TWindow, para que cualquier control pueda ser "scrolleable", así podremos tener paneles scrollables ó cajas de diálogo ó páginas de un folder.

Creo que por prioridad lo primero es implementar las cajas de diálogo no modales, luego los folders y finalmente dotar a TWindow de esta capacidad.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Carles » Wed Mar 01, 2006 8:02 am

Antonio,

No te olvides la clase TPage(), q en las pocket creo q su uso va a venir muy bien.

Saludos.
C.
User avatar
Carles
 
Posts: 1134
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Postby Antonio Linares » Wed Mar 01, 2006 8:04 am

Carles,

Cierto :)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Wed Mar 01, 2006 8:08 am

Como aún podemos tardar en tener todo listo, aquí os incluyo el código fuente del ejemplo. Ojo, hay que modificar la clase TSay como se indica y también ScrollWindow():
Code: Select all  Expand view
#include "FWCE.ch"

#define GWL_STYLE        (-16)
#define WS_VSCROLL  0x00200000
 
//----------------------------------------------------------------------------//

function Main()

   local oWnd, oSay
   local cName := Space( 20 ), cAddress := Space( 30 )

   DEFINE WINDOW oWnd TITLE "Scroll"

   @ 10, 10 SAY oSay PROMPT "" OF oWnd ;
      SIZE oWnd:nWidth() - 18, oWnd:nHeight() - 40;
      PIXEL BORDER COLOR "N/BG*"

   @  6, 3.8 SAY "Name:" OF oSay SIZE 40, 15
   
   @  7, 8 GET cName OF oSay SIZE 100, 18

   @  7.8, 2.1 SAY "Address:" OF oSay SIZE 50, 15
   
   @  9, 8 GET cAddress OF oSay SIZE 120, 18

   SetWindowLong( oSay:hWnd, GWL_STYLE,;
                  nOr( GetWindowLong( oSay:hWnd, GWL_STYLE ), WS_VSCROLL ) )

   ACTIVATE WINDOW oWnd

return nil


La Clase TSay (estas modificaciones, muy cambiadas, irán a TWindow):
Code: Select all  Expand view
// FWPPC Class TSay (C) FiveTech Software 2005

#include "FiveWin.ch"
...

CLASS TSay FROM TControl

   ...
   DATA   nStart, nEnd

   METHOD VScroll( nWParam, nLParam )
   ...

METHOD New( ... ) CLASS TSay

   ...

   ::nStart = 0
   ::nEnd   = -1000

return Self

...

METHOD VScroll( nWParam, nLParam ) CLASS TSay

   local nScrollCode := nLoWord( nWParam )

   do case
         case nScrollCode == SB_LINEUP
              if ::nStart < 0
              ScrollWindow( ::hWnd, 0, 10 )
              ::nStart += 10
           endif   

         case nScrollCode == SB_LINEDOWN
           if ::nStart > ::nEnd
              ScrollWindow( ::hWnd, 0, -10 )
              ::nStart -= 10
           endif   
   endcase          

return 0   


y finalmente ScrollWindow() queda así:
Code: Select all  Expand view
BOOL ScrollWindow( HWND hWnd,   int XAmount, int YAmount,   CONST RECT *lpRect,
                   CONST RECT *lpClipRect )
{
   return ScrollWindowEx( hWnd,   XAmount, YAmount, lpRect, lpClipRect, NULL, NULL, SW_ERASE | SW_SCROLLCHILDREN );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 18 guests