FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index EasyReport, EasyDialog y EasyPreview La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sat Aug 16, 2014 10:48 AM

Debe proporcionar la misma funcionalidad que al pulsar en la barra de scroll vertical (que parece seguir mal todav铆a)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sat Aug 16, 2014 11:26 PM
Antonio Linares wrote:Debe proporcionar la misma funcionalidad que al pulsar en la barra de scroll vertical (que parece seguir mal todav铆a)


Programa: EREPORT.PRG
Se soluciona con:
Code (fw): Select all Collapse
Function Main( ... )
...
聽 聽oMainWnd:oMsgBar:KeybOn()
聽 聽oMainWnd:oWndClient:bMouseWheel= {|nKey, nDelta, nXPos, nYPos| Er_MouseWheel( nKey, nDelta, nXPos, nYPos ) }

聽 聽BarMenu()

聽 聽ACTIVATE WINDOW oMainWnd ;
...


Code (fw): Select all Collapse
*-- function -----------------------------------------------------------------
* Name........: Er_MouseWheel
* Beschreibung:
* Argumente...: 
* R眉ckgabewert: .t.
* Author......: 
*-----------------------------------------------------------------------------

#define MK_MBUTTON 聽 聽 聽 聽 聽0x0010

function Er_MouseWheel( nKey, nDelta, nXPos, nYPos )
聽 聽local aPoint := { nYPos, nXPos }
聽 聽
聽 聽ScreenToClient( oMainWnd:oWndClient:hWnd, aPoint )

聽 聽if IsOverWnd( oMainWnd:oWndClient:hWnd, aPoint[ 1 ], aPoint[ 2 ] )
聽 聽 聽 if lAnd( nKey, MK_MBUTTON )
聽 聽 聽 聽 聽if nDelta > 0
聽 聽 聽 聽 聽 聽 ScrollVertical( ,,.T. ) 聽 聽 聽 聽//WheelScroll()
聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 ScrollVertical( ,,,.T.,, )
聽 聽 聽 聽 聽endif
聽 聽 聽 else
聽 聽 聽 聽 聽if nDelta > 0
聽 聽 聽 聽 聽 聽 ScrollVertical( .T.,,,, .T., -(WheelScroll()) )
聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 ScrollVertical( ,.T.,,, .T., WheelScroll() )
聽 聽 聽 聽 聽endif
聽 聽 聽 endif
聽 聽 聽 oMainWnd:oWndClient:oVScroll:Refresh()
聽 聽endif
return .t.


Pero, tal y como indicas, el c谩lculo del desplazamiento de las ventanas sigue mal
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 10:04 AM

Cristobal,

Implementado, Muchas gracias! :-)

He notado que al mover la rueda del rat贸n hacia arriba y hacia abajo, se puede apreciar como las areas por debajo de la primera, se van "metiendo" por debajo. Debe haber un fallo de c谩lculo en las coordenadas, 贸 alguna funci贸n de FWH funciona diferente de como lo hac铆a entonces...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 10:14 AM

Antonio, yo creo que es un problema de c谩lculo de coordenadas en la funcion ScrollVertical
Antes de implementar esta funcion, cuando movias la barra de scroll vertical ya se movia la ventana hacia abajo

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 11:03 AM

Cristobal,

Si en la l铆nea 655 cambio el valor de nZugabe el comportamiento varia.

No se si es nTotalHeight que est茅 mal. Tampoco he encontrado en donde se inicializa...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 11:17 AM
Por si sirve como pista ... al lanzar un informe , si miramos el "bot贸n" del scroll su tama帽o es peque帽o , como de medio cent铆metro . si hago un peque帽o scroll con la rueda del raton su tama帽o no cambia , pero en el segundo scroll pasa a tener un tama帽o mucho mayor ( yo dir铆a que el correcto ) . He puesto una pausa en:

FUNCTION ScrollVertical( lUp, lDown, lPageUp, lPageDown, lPos, nPosZugabe )

LOCAL i, aFirstWndCoors, nAltWert
LOCAL nZugabe := 14
LOCAL nPageZugabe := 392
LOCAL aCliRect := oMainWnd:GetCliRect()

DEFAULT lUp := .F.
DEFAULT lDown := .F.
DEFAULT lPageUp := .F.
DEFAULT lPageDown := .F.
DEFAULT lPos := .F.

pausa(1)

UnSelectAll()

FOR i := 1 TO 100
IF aWnd[i] <> NIL
aFirstWndCoors := GetCoors( aWnd[i]:hWnd )
EXIT
ENDIF
NEXT
....

cuando realizo el primer scroll pasa la pausa sin cambiar nada , pero al realizar el segundo scroll se redimensiona antes de llegar a la pausa ...
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 07:36 PM
Antonio Linares wrote:Cristobal,

Implementado, Muchas gracias! :-)

He notado que al mover la rueda del rat贸n hacia arriba y hacia abajo, se puede apreciar como las areas por debajo de la primera, se van "metiendo" por debajo. Debe haber un fallo de c谩lculo en las coordenadas, 贸 alguna funci贸n de FWH funciona diferente de como lo hac铆a entonces...


Si, lo vi desde que lo implement茅
Prueba esta solucion
Ha mejorado sustancialmente el desplazamiento con la rueda, pero va muy lento, hay que afinarlo
Tambien hay que comprobar el movimiento con la barra de scroll vertical tanto al pulsar en las flechas como en la propia barra

Code (fw): Select all Collapse
function SetScrollBar()

聽 聽local oVScroll
聽 聽local nPageZugabe := 392

聽 聽if !empty( oMainWnd:oWndClient:oVScroll )
聽 聽 聽 //oMainWnd:oWndClient:SetRange( 0, 100 )
聽 聽 聽 oMainWnd:oWndClient:oVScroll:SetRange( 0, nTotalHeight )

聽 聽 聽 oMainWnd:oWndClient:oVScroll:bGoUp 聽 聽 = {|| ScrollVertical( .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oVScroll:bGoDown 聽 = {|| ScrollVertical( , .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oVScroll:bPageUp 聽 = {|| ScrollVertical( ,, .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oVScroll:bPageDown = {|| ScrollVertical( ,,, .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oVScroll:bPos 聽 聽 聽= {| nWert | ScrollVertical( ,,,, .T., nWert ) }
聽 聽 聽 oMainWnd:oWndClient:oVScroll:nPgStep 聽 = nPageZugabe 聽 //392

聽 聽 聽 //oMainWnd:oWndClient:Refresh()
聽 聽 聽 oMainWnd:oWndClient:oVScroll:SetPos(0)
聽 聽endif

聽 聽if ! Empty( oMainWnd:oWndClient:oHScroll )
聽 聽 聽 //oMainWnd:oWndClient:SetRange( 0, 100 )
聽 聽 聽 oMainWnd:oWndClient:oHScroll:SetRange( 0, nTotalWidth )

聽 聽 聽 oMainWnd:oWndClient:oHScroll:bGoUp 聽 聽 = {|| ScrollHorizont( .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oHScroll:bGoDown 聽 = {|| ScrollHorizont( , .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oHScroll:bPageUp 聽 = {|| ScrollHorizont( ,, .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oHScroll:bPageDown = {|| ScrollHorizont( ,,, .T. ) }
聽 聽 聽 oMainWnd:oWndClient:oHScroll:bPos 聽 聽 聽= {| nWert | ScrollHorizont( ,,,, .T., nWert ) }
聽 聽 聽 oMainWnd:oWndClient:oHScroll:nPgStep 聽 = 602

聽 聽 聽 oMainWnd:oWndClient:oHScroll:SetPos(0)
聽 聽endif

return .T.


y tambien

Code (fw): Select all Collapse
function ScrollVertical( lUp, lDown, lPageUp, lPageDown, lPos, nPosZugabe )

聽 聽local i, aFirstWndCoors, nAltWert
聽 聽local nZugabe 聽 聽 := WheelScroll() * 14 聽 聽 聽// Aumentar
聽 聽local nPageZugabe := 392
聽 聽local aCliRect 聽 聽:= oMainWnd:GetCliRect()

聽 聽DEFAULT lUp 聽 聽 聽 := .F.
聽 聽DEFAULT lDown 聽 聽 := .F.
聽 聽DEFAULT lPageUp 聽 := .F.
聽 聽DEFAULT lPageDown := .F.
聽 聽DEFAULT lPos 聽 聽 聽:= .F.

聽 聽UnSelectAll()

聽 聽FOR i := 1 TO 100
聽 聽 聽 IF aWnd[i] <> nil
聽 聽 聽 聽 聽aFirstWndCoors := GetCoors( aWnd[i]:hWnd )
聽 聽 聽 聽 聽EXIT
聽 聽 聽 ENDIF
聽 聽NEXT

聽 聽
聽 聽IF lUp = .T. .OR. lPageUp = .T.
聽 聽 聽 IF aFirstWndCoors[ 1 ] = 0
聽 聽 聽 聽 聽nZugabe := 0
聽 聽 聽 ELSEIF ( aFirstWndCoors[ 1 ] + IIF( lUp, nZugabe, nPageZugabe ) ) >= 0
聽 聽 聽 聽 聽nZugabe 聽 聽 := -1 * aFirstWndCoors[ 1 ]
聽 聽 聽 聽 聽nPageZugabe := -1 * aFirstWndCoors[ 1 ]
聽 聽 聽 ENDIF
聽 聽ENDIF

聽 聽IF lDown = .T. .OR. lPageDown = .T.
聽 聽 聽 IF ( aFirstWndCoors[ 1 ] + nTotalHeight ) <= aCliRect[3] - 80
聽 聽 聽 聽 聽nZugabe 聽 聽 := 0
聽 聽 聽 聽 聽nPageZugabe := 0
聽 聽 聽 ENDIF
聽 聽ENDIF
聽 聽

聽 聽IF lPos = .T.
聽 聽 聽 nAltWert := oMainWnd:oWndClient:oVScroll:GetPos()
聽 聽 聽 oMainWnd:oWndClient:oVScroll:SetPos( nPosZugabe )
聽 聽 聽 nZugabe := -1 * nTotalHeight * ( oMainWnd:oWndClient:oVScroll:GetPos() - nAltWert ) / nTotalHeight //100
聽 聽ENDIF
聽 

聽 聽FOR i := 1 TO 100
聽 聽 聽 IF aWnd[i] <> nil
聽 聽 聽 聽 聽IF lUp = .T. .OR. lPos = .T.
聽 聽 聽 聽 聽 聽 aWnd[i]:Move( aWnd[i]:nTop + nZugabe, aWnd[i]:nLeft, 0, 0, .T. )
聽 聽 聽 聽 聽ELSEIF lDown = .T.
聽 聽 聽 聽 聽 聽 aWnd[i]:Move( aWnd[i]:nTop - nZugabe, aWnd[i]:nLeft, 0, 0, .T. )
聽 聽 聽 聽 聽ELSEIF lPageUp = .T.
聽 聽 聽 聽 聽 聽 aWnd[i]:Move( aWnd[i]:nTop + nPageZugabe, aWnd[i]:nLeft, 0, 0, .T. )
聽 聽 聽 聽 聽ELSEIF lPageDown = .T.
聽 聽 聽 聽 聽 聽 aWnd[i]:Move( aWnd[i]:nTop - nPageZugabe, aWnd[i]:nLeft, 0, 0, .T. )
聽 聽 聽 聽 聽ENDIF
聽 聽 聽 ENDIF
聽 聽NEXT

return .T.


https://navarro_cristobal@bitbucket.org ... ort_n1.git
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 17, 2014 08:07 PM
Asi muchisimo mejor el desplazamiento con el raton, pero la barra mal

Code (fw): Select all Collapse
function SetScrollBar()

聽 聽local oVScroll
聽 聽local nPageZugabe := 392

聽 聽if !empty( oMainWnd:oWndClient:oVScroll )
聽 聽 聽 //oMainWnd:oWndClient:SetRange( 0, 100 )
聽 聽 聽 oMainWnd:oWndClient:oVScroll:SetRange( 0, nTotalHeight/100 )
.../...


Code (fw): Select all Collapse
function ScrollVertical( lUp, lDown, lPageUp, lPageDown, lPos, nPosZugabe )

.../...

聽 聽IF lPos = .T.
聽 聽 聽 nAltWert := oMainWnd:oWndClient:oVScroll:GetPos()
聽 聽 聽 oMainWnd:oWndClient:oVScroll:SetPos( nPosZugabe )
聽 聽 聽 nZugabe := -1 * nTotalHeight * ( oMainWnd:oWndClient:oVScroll:GetPos() - nAltWert ) / ( nTotalHeight / 100 )
聽 聽ENDIF
.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Mon Aug 18, 2014 05:30 AM

Cristobal,

Esta genial! :-)

Much铆simo mejor y adem谩s se solucion贸 el efecto de que el segundo grupo se iba metiendo debajo del primero! :-D

Veamos donde se crea la barra de scroll y como se ha definido...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 422
Joined: Mon Aug 17, 2009 12:18 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Thu Aug 21, 2014 06:49 PM

Hola,

Me temo que no funciona, cuando usas el scrollbar de la WndMain se acaba quedando la pantalla en blanco sin las 谩reas.

Pero ya cada vez tiene una pinta impresionante y mucho m谩s r谩pido que el vrd.exe de Tim.

Saludos,



Eduardo
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 24, 2014 07:04 PM
Si se maneja la rueda del rat贸n con la versi贸n de hoy funciona OK.

Ahora bien, efectivamente como apunta Eduardo si se maneja la barra de scroll de la ventana del dise帽ador entonces desaparece todo el dise帽o y se queda la pantalla en gris:

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Sun Aug 31, 2014 06:15 PM

Hola,

Por favor, no pas茅is esto.

Gracias.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Tue Sep 02, 2014 09:18 PM
Probad la siguiente funcion
El movimiento sobre la barra de scroll mejora significativamente
No lo subo porque estoy probando otras modificaciones,
A ver qu茅 opin谩is

Code (fw): Select all Collapse
function SetScrollBar()

聽 聽//local oVScroll
聽 聽local nPageZugabe := 392/100
聽 聽local oWnd 聽 聽 聽 聽:= oEr:oMainWnd:oWndClient

聽 聽if !Empty( oWnd:oVScroll )
聽 聽 聽 nPageZugabe := 392/100
聽 聽 聽 oWnd:oVScroll:SetRange( 0, nTotalHeight / 100 )
聽 聽 聽 
聽 聽 聽 oWnd:oVScroll:bGoUp 聽 聽 = { || ScrollVertical( .T. ) }
聽 聽 聽 oWnd:oVScroll:bGoDown 聽 = { || ScrollVertical( , .T. ) }
聽 聽 聽 oWnd:oVScroll:bPageUp 聽 = { || ScrollVertical( ,, .T. ) }
聽 聽 聽 oWnd:oVScroll:bPageDown = { || ScrollVertical( ,,, .T. ) }
聽 聽 聽 oWnd:oVScroll:bPos 聽 聽 聽= { | nWert | ScrollVertical( ,,,, .T., nWert/100 ) }
聽 聽 聽 oWnd:oVScroll:nPgStep 聽 = nPageZugabe 聽 //392
聽 聽 聽 
聽 聽 聽 oWnd:oVScroll:SetPos( 0 )
聽 聽endif

聽 聽if ! Empty( oWnd:oHScroll )
聽 聽 聽 nPageZugabe := 602/100
聽 聽 聽 oWnd:oHScroll:SetRange( 0, nTotalWidth / 100 )

聽 聽 聽 oWnd:oHScroll:bGoUp 聽 聽 = {|| ScrollHorizont( .T. ) }
聽 聽 聽 oWnd:oHScroll:bGoDown 聽 = {|| ScrollHorizont( , .T. ) }
聽 聽 聽 oWnd:oHScroll:bPageUp 聽 = {|| ScrollHorizont( ,, .T. ) }
聽 聽 聽 oWnd:oHScroll:bPageDown = {|| ScrollHorizont( ,,, .T. ) }
聽 聽 聽 oWnd:oHScroll:bPos 聽 聽 聽= {| nWert | ScrollHorizont( ,,,, .T., nWert/100 ) }
聽 聽 聽 oWnd:oHScroll:nPgStep 聽 = nPageZugabe 聽//602

聽 聽 聽 oWnd:oHScroll:SetPos( 0 )
聽 聽endif

return .T.
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Wed Sep 03, 2014 08:20 AM
cnavarro wrote:Probad la siguiente funcion

No funciona correctamante , llevo 2 dias con ello y no lo he conseguido ... , solo funciona bien y no del todo la parte del scroll del rat贸n.
Creo que nos estamos liando y debemos replantear el funcionamiento desde cero .
Pongamos el analisis en com煤n .Desearia me confirmeis que puntos de los que espongo son correctos y cuales no .
1.- el total del largo a despalzar es ntotalHeight .
2.- si partimos que ntotalHeight es el 100% del desplazamiento podemos partir de un rango de scroll de 0 a 100 oVscroll:setrange( 0,100 )
3.- podemos poner que cada pulsacion goDown()/goup() en un desplazamiento de un 1% y cada gopagup()/gopagedown() es de un 10% por poner unos valores fijos.
4.- el "move" de cada ventana seria en caso de un godown() = ntotalheight /100 y en un gopagedown() = ntotlaHeiht/10

5.- de momento olvidemonos del scroll del raton hasta resolver esto .

Ahora los problemas ....
ovscroll:getpos() ...驴 que devuelve ? en teoria dever铆a devolver la posicion del scroll en la barra ? . A mi no me lo esta haciendo ...

podriamos intentar declarar una variable statica nVpos que nos digera en que posicion se encuentra la barra de scroll y dependiendo de su valor mover las ventanas...

ante un godown() nVpos ++ y nZugabe := ntotalHeight/100 , ante un gopgdown() nVpos:=nvpos+10 y nZugabe := ntotalHeight/10, cuando nvpos llegue a 100 nZugabe := 0 ,etc..

comentarme algo al respecto ...
Saludos a todos.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: La rueda del rat贸n debe mover todo el reporte arriba y abajo
Posted: Wed Sep 03, 2014 10:18 AM

Manuel,

A mi me parece bien tu planteamiento.

Dices que la barra de scroll no devuelve correctamente la posici贸n, como lo has comprobado ?

regards, saludos

Antonio Linares
www.fivetechsoft.com