Agregar Marca de Agua TTaskPanel ( Solucionado )

Agregar Marca de Agua TTaskPanel ( Solucionado )

Postby cuatecatl82 » Sat May 24, 2014 1:37 pm

Saludos Colegas:

Estoy trabajando con la excelente Clase TTaskPanel de Andres Reyez Hernandez, me gustaria agregarle un poco de estética y me preguntaba si es posible dibujar un Bitmap de forma transparente para simular marca de agua en la parte baja de la barra:

Image

Como podria hacerlo ya que trabajo desde recursos en Dialogo, yevo 2 dias tratando pero no doy ya que dibuja la imagen pero detras del control, seria posible hacerlo sin tocar la clase original..? como hacerlo

Saludos..
Last edited by cuatecatl82 on Thu Jun 05, 2014 2:00 am, edited 1 time in total.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Sun May 25, 2014 1:39 am

Casi un dia de trabajo más en este detalle y parece que ya he logrado algo, pero todavia me falla, les comento:

Para poder agregar esta modalidad agrege una DATA "cBmpTransp" para el nombre del archivo BMP a mostrar y un Funcion Override "WaterMark()" para mostrar la imagen a la clase TTaskPanel

Code: Select all  Expand view
PROCEDURE OverrideAndExtend()

EXTEND CLASS TTaskPanel WITH DATA   cBmpTransp
EXTEND CLASS TTaskPanel WITH METHOD WaterMark

RETURN

STATIC FUNCTION WaterMark()

LOCAL oIma
LOCAL Self:= qSelf()
LOCAL hDC:= GetDC()

DEFINE IMAGE oIma OF Self FILENAME ::cBmpTransp
    PalBmpDraw( hDC, 550,50, oIma:hBitmap, , 100,100 )
    oIma:END()
RETURN Nil


y la invoco así:

Code: Select all  Expand view
LOCAL oDlg, oTask
  DEFINE DIALOG      oDlg    RESOURCE "Test"
REDEFINE TASKPANEL   oTask   ID 100 ANIMATE
   oTask:cBmpTransp:= ".\windows.bmp"
   oTask:WaterMark()
ACTIVATE DIALOG oDlg CENTERED On init ArmaTaskPnl(oTask)
Return nil
 

Ya la muestra al iniciar TTaskPanel, pero la deja atras, y al cerrar el dialogo la imagen se queda en pantalla:

Image
Image

Alguien que me de una luz, Maestro Antonio, Uwe, Daniel Garcia-Gil, maestros de las images con trasparencia, se los agradeceria mucho..

Saludos y gracias.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby carlos vargas » Sun May 25, 2014 6:20 pm

me parece que ademas de llamar la funcion en el on init, tambien debes llamarla en el on paint, para que la repinte cada vez que lo haga el control.
ademas deberás hacer un metodo end, para que elimine el bitmap, esto que pongo es algo al vuelo, no probado de ninguna manera, es como darte una idea.
Code: Select all  Expand view

...
EXTEND CLASS TTaskPanel WITH DATA   cBmpTransp
EXTEND CLASS TTaskPanel WITH DATA   oBmpTransp

EXTEND CLASS TTaskPanel WITH METHOD MyEnd
...
STATIC FUNCTION WaterMark()
    LOCAL Self := HB_QSelf()
    LOCAL hDC := GetDC()

    IF !empty( ::cBmpTransp )

        DEFINE IMAGE ::oBmpTransp OF Self FILENAME ::cBmpTransp

        IF hb_isObject( ::oBmpTransp ) .and. ::oBmpTransp:hBitmap <> 0
            PalBmpDraw( hDC, 550, 050, ::oBmpTransp:hBitmap, , 100, 100 )
        ENDIF

    ENDIF
   
    ReleaseDC( ::hWnd, hDC )

RETURN NIL

STATIC FUNCTION MyEnd()
    LOCAL Self := HB_QSelf()

    IF hb_isObject( ::oBmpTransp ) .and. ::oBmpTransp:hBitmap <> 0
        ::oBmpTransp:end()
    ENDIF

    ::end()

RETURN NIL

 


otra cosa yo uso esta funcion para que lo muestre trasparente, busca en la ayuda de fwh
Code: Select all  Expand view

   ABPaint( hDC                                                       , ;
            ( ( oMainD:oWndClient:nWidth()  - oBmpLogo:nWidth()  ) )/2, ;
            ( ( oMainD:oWndClient:nHeight() - oBmpLogo:nHeight() ) )/2, ;
            oBmpLogo:hBitmap, 0 )

 

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1688
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Mon May 26, 2014 3:53 am

carlos vargas

Gracias por tu sugerencia, te comento que hace lo mismo, no dibuja la imagen dentro del TaskPanel, si muevo las coordenadas para poder dibujarla fuera del dialogo si se ve, pero al cerrar no lo borra queda pegada como en el ejemplo que comente anteriormente, ya habia probado ponerle en el on paint que pinte la imagen pero la pinta en las coordenadas que le indico no donde deveria, no toma como contenedor a TaskPanel, creo que eso seria lo ideal pero no encuentro la manera de lograrlo..


Mi idea es hacer algo como esto:

Image

Con la posibilidad de variar su nivel de trasnparencia ya sea en bmp a 32bits o a 24bits de colores

Continuo revisando y probando..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby carlos vargas » Mon May 26, 2014 3:54 pm

prueba

...
LOCAL hDC := ::GetDC() // aca usabamos GetDC() el cual obtenial el DC del objecto actual (dialogo) en tanto ::GetDC obtendra el DC del control en si.


salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1688
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Mon May 26, 2014 11:14 pm

Muchas Gracias Carlitos, con tu bondadosa ayuda estoy logrando mi objetivo, te comento que ya dibuja la imagen dentro del control tTaskPanel, pero todavia tiene inconvenientes: y es que no dibuja a la primera el bitmap.

Image

Hay que arrastrar el dialogo de arriba a abajo o a los lados para que dibuje la imagen, y cuando lo hace y mueves el mouse el bitmap desaparece, a veces lo hace con la trasparencia que le asigno, pero a veces no, si abres y cierras otras ventanas con el dialogo abierto la imagen desaparece.. te envio un exe con el error que describo y los fuentes del proyecto..

Ojala le puedas encontrar el detalle, te lo agradeceria bastante..

http://www.mediafire.com/download/gaa5xfb40mys580/WaterMark.zip

Saludos..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby carlos vargas » Tue May 27, 2014 3:06 pm

okis, lo revisare
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1688
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Tue May 27, 2014 3:45 pm

Les comento lo siguiente:

He logrado evitar que una vez dibujado el bitmap no desaparesca, encontre que el metodo MouseMove de la Clase TTaskpanel hace el efecto de cambiar color y asignar un CursorHand como si se tratara de un link al pasar el cursor por el titulo del panel, en mi caso no necesito que este efecto se manifieste, modifique la clase no se si de manera correcta evitando este efecto:

Code: Select all  Expand view

PROCEDURE OverrideAndExtend()

  EXTEND CLASS  TTaskPanel WITH DATA   cBmpTransp
  EXTEND CLASS  TTaskPanel WITH DATA   oBmpTransp
 
  EXTEND CLASS  TTaskPanel WITH METHOD WaterMark
  EXTEND CLASS  TTaskPanel WITH METHOD MyEnd

OVERRIDE METHOD MouseMove    IN CLASS  TTaskPanel  WITH MiMouseMove

RETURN

//-------------------------------------------------//
STATIC FUNCTION WaterMark()
   
LOCAL Self := HB_QSelf()
LOCAL hDC := ::GetDC()

    IF !EMPTY( ::cBmpTransp )

        DEFINE IMAGE ::oBmpTransp OF Self FILENAME ::cBmpTransp

        IF hb_isObject( ::oBmpTransp ) .AND. ::oBmpTransp:hBitmap <> 0
            ABPaint( hDC, 07, 470, ::oBmpTransp:hBitmap, 250 )
        ENDIF

    ENDIF

    ReleaseDC( ::hWnd, hDC )

RETURN Nil


//-------------------------------------------------//
STATIC FUNCTION MyEnd()

LOCAL Self := HB_QSelf()

    IF hb_isObject( ::oBmpTransp ) .AND. ::oBmpTransp:hBitmap <> 0
        ::oBmpTransp:END()
    ENDIF

    ::END()

RETURN Nil

//-------------------------------------------------//
STATIC FUNCTION MiMouseMove( nRow, nCol, bKeyFlags )

# Define TME_LEAVE             2

LOCAL Self := HB_QSelf()

   TrackMouseEvent( ::hWnd, TME_LEAVE )

RETURN Nil
 


Lo que no logro es que pinte el bitmap a la primera, no funciona hacer oDlg:Refresh(), oTask:Refresh() o ::oBmpTransp:Refresh(), la unica forma de pintar el bitmap es arrastrando el dialogo fuera del tamaño de la pantalla arriba, abajo o a los lados, por este mismo fallo continua desapareciendo la imagen al sobre poner otras ventanas o dialogos

Carlitos te envio una actualizacion con los cambios..
https://www.mediafire.com/?kh9717bu8aer5ql

Gracias..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Wed May 28, 2014 1:06 pm

Maestro Antonio:

Alguna Idea de como evitar este fallo en el pintado..? :cry: :cry: :cry:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Mon Jun 02, 2014 9:33 pm

Saludos de Nuevo al foro:

Perdón por la insistencia con el tema, llevo una semana y no doy como corregir este problema
carlos vargas, pudiste revisar el ejemplo que comparti.?
Maestro Anotio que puedo hacer, por dondemas puedo modificar o probar..?

Saludos y Gracias..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel

Postby cuatecatl82 » Thu Jun 05, 2014 1:58 am

Saludos a la comunidad:

Cierro en tema, me costo un poco encontrar y solucionar el fallo pero quedo.
Probado en Windows XP con varios temas, Windows 7 y Windows 8

Image

Saludos y gracias por leer el tema..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Postby Patricio Avalos Aguirre » Thu Jun 05, 2014 1:55 pm

Hola cuatecatl82

y cual fue la solucion ?

sería bueno incluirla para que los que usamos ttaskPanel de andres reyes
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Postby sysctrl2 » Thu Jun 05, 2014 7:00 pm

yo tambien la uso,
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 959
Joined: Mon Feb 05, 2007 7:15 pm

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Postby Patricio Avalos Aguirre » Wed Jun 18, 2014 4:54 am

para q no se quede en el olvido

pd: Seria bueno que cada solucion se posteara ya que nos sirve para todos
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Postby jbrita » Mon Nov 17, 2014 9:39 pm

Hola cuatecatl82, como dijo Patricio

y cual fue la solucion ?

sería bueno incluirla para que los que usamos ttaskPanel de andres reyes
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 32 guests

cron