FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para CA-Clipper 16 bits tranparentes
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
16 bits tranparentes
Posted: Thu Feb 02, 2006 05:36 PM
Qué embidia de diálogos tranparentes con los 32 bits. Menos mal que con 16 bits tambien se puede: Ahí va una clase que ayyuda

#Include "FiveWin.ch"
*#Include "MisFunc.ch"

#define GWL_STYLE -16

CLASS TDIAG OF TDIALOG

CLASSDATA lRegistered AS LOGICAL

DATA lSomb AS LOGICAL INIT .F.
DATA hFond,hPen,nDif

METHOD Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen, nClrShadow )
METHOD Initiate( hWndFocus, hWnd )
METHOD Paint()
METHOD StartPaint()
METHOD PintSombra()
METHOD Destroy()

ENDCLASS


METHOD Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen, nClrShadow ) CLASS TDIAG
IF nClrShadow # NIL
::lSomb := .T.
::hPen := CreatePen( 0,1,nClrShadow )
ENDIF
DEFINE BRUSH ::oBrush NULL
RETURN Super:Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen )

METHOD Initiate( hWndFocus, hWnd ) CLASS TDIAG
LOCAL lFocus := Super:Initiate( hWndFocus, hWnd )
*
::nDif := IF(lAnd(GetWindowLong(::hWnd,GWL_STYLE),WS_BORDER),1,0)
::bStart := { || ::StartPaint() }
RETURN lFocus

METHOD Paint() CLASS TDIAG
DrawBitmap( ::hDc, ::hFond, -::nDif, -::nDif )
IF ::bPainted # NIL
EVAL(::bPainted,::hDc)
ENDIF
RETURN NIL
*
METHOD StartPaint() CLASS TDIAG
::GetDc()
::PintSombra(::hDc)
::ReleaseDc()
IF ::bPainted # NIL
ENDIF
::hFond := WndBitmap(::hWnd)
RETURN NIL
*
METHOD PintSombra(hDc) CLASS TDIAG
LOCAL hOldP := SelectObject( hDc,::hPen )
LOCAL nCont1,nCont2 := 0
LOCAL nDesde := 2
LOCAL nHasta := ::nWidth+::nHeight-2
*
FOR nCont1 = nDesde TO nHasta STEP 2
nCont2 := nCont1 - ::nHeight
MoveTo(hDc,nCont1,0)
LineTo(hDc,nCont2,::nHeight)
MoveTo(hDc,nCont2,0)
LineTo(hDc,nCont1,::nHeight)
NEXT
SelectObject( hDc,hOldP )
RETURN NIL

METHOD Destroy() CLASS TDIAG
DeleteObject(::hFond)
DeleteObject(::hPen)
RETURN NIL

Por favor, si alguien la perfecciona, le agradecería que me mandara el nuevo código a mi e-mail (ramosframit@ono.com)

Y EL FONDO NO SE BORRA CUANDO SE REFRESCA. El único inconveniente es que sólo se puede emplear con diálogos estáticos.

[img]http://img72.imageshack.us/img72/5411/ejemplo10dn.jpg" alt="" loading="lazy">[/img]

En este ejemplo, lo uso para la soombra del diaologo de confirmacion

[img]http://img72.imageshack.us/img72/2374/ejemplo20lx.jpg" alt="" loading="lazy">[/img]

En este otro, para la sombra del diálogo naranja, y para el menu que hay por detrástranlucido.
Nos Gusta Programar
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
16 bits tranparentes
Posted: Fri Feb 03, 2006 05:05 PM

Manu,

Está muy bien!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
16 bits tranparentes
Posted: Sat Feb 04, 2006 10:43 AM

Muy buenos Manuel, pero lo que mas me han impresionado son los folders que utilizas.- ¿Como lo haces?

Gracias y un saludo desde Málaga

Un saludo



Manuel
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
16 bits tranparentes
Posted: Sat Feb 04, 2006 01:39 PM

Muchas gracias Manuel, pero no son folders, son BITMAPS, pero da el pego. Los dialogo son NOWAIT sobre un WINDOW normal. Va muy bien; parecido al entorno MDI, pero, en ciertos aspectos, más controlable, si nunca se va a mostrar.
Hay dos BITMAPS para cada solapa, la activa y las otras, inactivas.

Nos Gusta Programar
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
16 bits tranparentes
Posted: Sat Feb 04, 2006 01:43 PM

Bueno, en realidad, son tres BITMAPS por cada solapa, se me olvidaba nombrar los que se 'ReLoadea'n cuando paso el Mouse por encima (un poco más altos, para dar la impresión de que las solapas se elevan al pasar el ratón por encima).

Nos Gusta Programar
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
16 bits tranparentes
Posted: Sat Feb 04, 2006 11:25 PM

Repasando mi clase TDIAG me he dado cuenta de un pequeño error, ::PintSombra sólo debe ejecutarse (en bStartPaint) si ::lSomb es .T.
Perdon!!
Lo que pasa es que yo siempre la utilizo con color de sombra.

Nos Gusta Programar
Posts: 28
Joined: Thu Mar 02, 2006 09:06 PM
16 bits tranparentes
Posted: Tue Mar 07, 2006 11:34 PM

excelente trabajo, Felicidades

Manuel Escamilla Melchor

Siesa de C.V.

Mexico, D.F.

Continue the discussion