FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index EasyReport, EasyDialog y EasyPreview El rat贸n al moverse deja "rastro" en las reglas
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja "rastro" en las reglas
Posted: Sat Aug 16, 2014 10:49 AM

Manuel,

Como el fondo de las reglas es de color celeste, el invertir el color podr铆a servir pues se ver铆a oscuro.

Cristobal, lo tienes ya casi implementado 贸 me pongo con ello ? gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: El rat贸n al moverse deja "rastro" en las reglas
Posted: Sat Aug 16, 2014 11:01 AM
Con este c贸digo funciona el pintado pero el problema surge cuando cambiamos el raton de area que deja un rastro de donde se dibujo la linea ...

Code (fw): Select all Collapse
  ...
   drawRulerLines( oApp:aRulerBmp1[nArea], nRulerTop, nRuler, nColPos )

//   AEVAL( aRuler, {|x,y| IIF( x[1] <> NIL, ;
 //     ( x[1]:Move( nRulerTop-nRuler, nColPos, 1, ;
 //         IIF( lShow, ER_GetPixel( oGenVar:aAreaSizes[y,2] ) + nRuler, nRuler ), .T. ) ), ) } )

...

FUNCTION drawRulerLines( oRulerBmp, nRulerTop, nRuler, nColPos )

   LOCAL hDC := oRulerBmp:GetDC()

  if !empty( aOldRect )
      InvertRect(hDC , aOldRect )
   endif
   aNewRect := { nRulerTop - (nRuler+10 ), nColPos-2, nRulerTop , nColPos }
   InvertRect( hDC , aNewRect )
   aOldRect := aNewRect

 oRulerBmp:ReleaseDC()

 RETURN nil
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 11:25 AM

Manuel,

Voy a probarlo, gracias! :-)

Hay que implementar el evento de abandono de superficie para eliminar ese 煤ltimo pintado:

define TME_LEAVE 2

define WM_MOUSELEAVE 675

METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS ...

TrackMouseEvent( ::hWnd, TME_LEAVE )

...

METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS ...

if nMsg == WM_MOUSELEAVE
return ::MouseLeave( nHiWord( nLParam ), nLoWord( nLParam ), nWParam )
endif

...

METHOD MouseLeave( nRow, nCol, nFlags ) CLASS ...

::lMOver = .F.
::Refresh()

return nil

Lo 煤nico que como son ventanas MDICHILD vamos a tener que derivar 贸 a帽adir esos m茅todos dinamicamente (no se si funcionar谩)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 11:38 AM

Manuel,

Tenemos que hacer el pintado vertical en todas las areas, porque por ejemplo el usuario puede querer alinear un item de un area con otro de otra area.

En tal caso, casa regla deber铆a tener sus ultimas coordenadas de dibujo...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 11:50 AM

Manuel,

Partiendo de tu c贸digo lo he implementado, a falta de implementar el c贸digo de s谩lida de 谩rea.

El problema que tenemos ahora es que al pasar por encima de un control (item) no se pinta.

A ver que se nos ocurre...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 11:50 AM

Tenemos que hacer lo mismo en el pintado lateral...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 12:05 PM

Os acordais de en donde se creaban los SAYs usados para esas l铆neas verticales ? Tenemos que eliminar el de arriba...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 12:10 PM

en : FillWindow( nArea, cAreaIni ) linea 1414 apox.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sat Aug 16, 2014 12:36 PM

He modificado el c贸digo que acababa de subir, me hab铆a liado con los aRulers :-)

En realidad pintamos directamente sobre las ventanas MDIChild que estan en aWnd

Poco a poco enter茅ndonos de en donde est谩 cada cosa :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sun Aug 17, 2014 10:36 AM

La soluci贸n funciona muy bien
Pero si hay alguna "regla" que no aparece entera en la pantalla, al desplazarte hacia abajo se queda la marca y ya no se quita
Habr铆a, o bien, hacer un refresh de ese bmp cuando aparece totalmente o no dibujar si las "reglas" no son totalmente visibles
Espero haberme explicado

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: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sun Aug 17, 2014 10:46 AM
He convertido las variables oRulerBmp1 y oRulerBmp2 en arrays para asignar un control distinto en cada area

Code (fw): Select all Collapse
function DeclarePublics( cDefFile )
.../...
聽 聽PUBLIC oRulerBmp1 := {}
聽 聽PUBLIC oRulerBmp2 := {}
聽 聽PUBLIC nRuler 聽 聽:= 20
聽 聽PUBLIC nRulerTop := 37
.../...


Code (fw): Select all Collapse
function FillWindow( nArea, cAreaIni )
.../...
聽 聽if Len( oRulerBmp1 ) < nArea
聽 聽 聽 AAdd( oRulerBmp1, nil )
聽 聽endif
聽 聽if Len( oRulerBmp2 ) < nArea
聽 聽 聽 AAdd( oRulerBmp2, nil )
聽 聽endif

聽 聽@ nRulerTop-nRuler, 20 BITMAP oRulerBmp1[ nArea ] RESOURCE cRuler1 OF aWnd[nArea] PIXEL NOBORDER
聽 聽@ nRulerTop-nRuler, 聽0 BITMAP oRulerBmp2[ nArea ] RESOURCE cRuler2 OF aWnd[nArea] PIXEL NOBORDER
.../...
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: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Sun Aug 17, 2014 11:57 AM
Antonio Linares wrote:Manuel,

.../...

El problema que tenemos ahora es que al pasar por encima de un control (item) no se pinta.

A ver que se nos ocurre...


Antonio, Manuel, deber铆a ser algo asi, no?
Pero hay algo que se me escapa (o la idea no es la correcta)
Tampoco he comprobado c贸mo almacena los items ( cuando uno est谩 inclu铆do en otro, por ejemplo ) por lo que s贸lo lo estoy probando con la imagen superior derecha del ejemplo

Code (fw): Select all Collapse
function DrawRulerLines( oWnd, nColPos, nRowPos )
聽 聽local aPoint 聽 := { nRowPos, nColPos }
聽 聽local aPointI 聽:= aPoint
聽 聽local y
聽 聽local z 聽 聽 聽 聽:= 0
聽 聽local lSw 聽 聽 聽:= .F.
聽 聽local hDC 聽 //:= oWnd:GetDC()

聽 聽For y = 1 to len( aItems )
聽 聽 聽 聽if !empty( aItems[ y, 1 ] )
聽 聽 聽 聽 聽 //ScreenToClient( aItems[ y, 1 ]:hWnd, aPointI )
聽 聽 聽 聽 聽 //ClientToScreen( aItems[ y, 1 ]:hWnd, aPointI )
聽 聽 聽 聽 聽 if IsOverWnd( aItems[ y, 1 ]:hWnd, aPointI[ 1 ], aPointI[ 2 ] )
聽 聽 聽 聽 聽 聽 聽//ScreenToClient( aItems[ y, 1 ]:hWnd, aPoint )
聽 聽 聽 聽 聽 聽 聽oMsgInfo:SetText( " 聽 聽SI 聽 聽 " )
聽 聽 聽 聽 聽 聽 聽z 聽 聽:= y
聽 聽 聽 聽 聽 聽 聽lSw 聽:= .T.
聽 聽 聽 聽 聽 聽 聽y 聽 聽:= len( aItems ) + 1
聽 聽 聽 聽 聽 endif
聽 聽 聽 聽endif
聽 聽Next y

聽 聽hDC := oWnd:GetDC()
聽 聽if !lSw
聽 聽 聽 //hDC := oWnd:GetDC()
聽 聽 聽 if ! Empty( oWnd:Cargo ) 
聽 聽 聽 聽 聽InvertRect( hDC, oWnd:Cargo )
聽 聽 聽 endif 聽 
聽 聽 聽 oWnd:Cargo = { 17, aPoint[ 2 ], 37, aPoint[ 2 ] + 1 }
聽 聽 聽 InvertRect( hDC, oWnd:Cargo )

聽 聽else
聽 聽 聽 if ! Empty( aItems[ z, 1 ]:Cargo ) 
聽 聽 聽 聽 聽InvertRect( hDC, aItems[ z, 1 ]:Cargo )
聽 聽 聽 endif 聽 
聽 聽 聽 ClientToScreen( aItems[ z, 1 ]:hWnd, aPoint )
聽 聽 聽 aItems[ z, 1 ]:Cargo = { 17, aPoint[ 2 ], 37, aPoint[ 2 ] + 1 }
聽 聽 聽 InvertRect( hDC, aItems[ z, 1 ]:Cargo )

聽 聽endif
聽 聽oWnd:ReleaseDC()

return nil
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: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Mon Aug 18, 2014 06:22 AM

Cristobal,

En realidad no necesitamos guardar los bitmaps de los rulers puesto que el pintado se hace encima de la propia ventana.

Acabo de subir unos cambios para el pintado horizontal.

La soluci贸n ser铆a que todos los items en su bMMoved llamen a la funci贸n SetReticule()

A ver si damos con el sitio correcto para hacer tal asignaci贸n

En cuanto la salida del rat贸n del area de la ventana, a ver que hacemos porque si modificamos la clase TMdiChild estariamos modificando todas las MdiChilds de la aplicaci贸n y eso no es correcto. Vamos a tener que crear una clase derivada de TMdiChild...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Mon Aug 18, 2014 07:00 AM

Critobal, Manuel,

En eritems.prg function ElementActions() he definido el bMMoved de los items para que llamen a SetReticule() convirtiendo las coordenadas recibidas en el item a coordenadas de su ventana padre (un Area). En principio lo hace bien pero se ve un parpadeo en la ultima posici贸n pintada en el padre.

Lo he subido a bitbucket y a ver si se nos ocurre como quitar ese parpadeo 贸 por que ocurre.

Se agradece ayuda! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: El rat贸n al moverse deja &quot;rastro&quot; en las reglas
Posted: Tue Aug 19, 2014 01:11 AM

Solucionado y subido a bitbucket :-)

Solo falta ya controlar cuando el rat贸n se marcha de un area. Tambien si hacemos scroll previamente hay que apagar las l铆neas pintadas.

regards, saludos

Antonio Linares
www.fivetechsoft.com