Agregar Marca de Agua TTaskPanel ( Solucionado )

Post Reply
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Agregar Marca de Agua TTaskPanel ( Solucionado )

Post by cuatecatl82 »

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
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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

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

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
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Post by carlos vargas »

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


...
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


   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
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Post by carlos vargas »

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
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Agregar Marca de Agua TTaskPanel

Post by carlos vargas »

okis, lo revisare
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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


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
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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
Contact:

Re: Agregar Marca de Agua TTaskPanel

Post by cuatecatl82 »

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
Patricio Avalos Aguirre
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Post by Patricio Avalos Aguirre »

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
sysctrl2
Posts: 1048
Joined: Mon Feb 05, 2007 7:15 pm
Has thanked: 6 times
Contact:

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Post by sysctrl2 »

yo tambien la uso,
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
Patricio Avalos Aguirre
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Post by Patricio Avalos Aguirre »

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
jbrita
Posts: 507
Joined: Mon Jan 16, 2006 3:42 pm

Re: Agregar Marca de Agua TTaskPanel ( Solucionado )

Post by jbrita »

Hola cuatecatl82, como dijo Patricio

y cual fue la solucion ?

sería bueno incluirla para que los que usamos ttaskPanel de andres reyes
Post Reply