[Aportes indexados] Codigo para transparencia de formularios

Estado
Cerrado para nuevas respuestas.

Loveless

Newbie Lvl 2
Buenas!, aca les dejo este codigo el cual consiste en lo siguiente: dar transparencia al formulario atraves de una api :p, pero es distinto a los otros, bueno pruebenlo y me dicen.

Primero crean un Modulo.bas y escriben esto:


--------------------------------------------------------------------------
[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"><span style="color: #b1b100;">Option</span> <span style="color: #b1b100;">Explicit</span></li><li style="" class="li1"> </li><li style="" class="li2"><span style="color: #808080;">'Función Api para aplicar la transparencia a la ventana</span></li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Declare</span> <span style="color: #b1b100;">Function</span> SetLayeredWindowAttributes Lib <span style="color: #ffffff;">"user32"</span> _</li><li style="" class="li1">    <span style="color: #66cc66;">(</span>ByVal hwnd <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, _</li><li style="" class="li2">     ByVal crKey <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, _</li><li style="" class="li1">     ByVal bAlpha <span style="color: #b1b100;">As</span> Byte, _</li><li style="" class="li1">     ByVal dwFlags <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #808080;">'Funciones api para los estilos de la ventana</span></li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Declare</span> <span style="color: #b1b100;">Function</span> GetWindowLong Lib <span style="color: #ffffff;">"user32"</span> Alias <span style="color: #ffffff;">"GetWindowLongA"</span> _</li><li style="" class="li2">    <span style="color: #66cc66;">(</span>ByVal hwnd <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, _</li><li style="" class="li1">     ByVal nIndex <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span></li><li style="" class="li1"> </li><li style="" class="li2"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Declare</span> <span style="color: #b1b100;">Function</span> SetWindowLong Lib <span style="color: #ffffff;">"user32"</span> Alias <span style="color: #ffffff;">"SetWindowLongA"</span> _</li><li style="" class="li1">    <span style="color: #66cc66;">(</span>ByVal hwnd <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, _</li><li style="" class="li1">     ByVal nIndex <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, _</li><li style="" class="li2">     ByVal dwNewLong <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span></li><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #808080;">'Constantes</span></li><li style="" class="li2"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Const</span> GWL_EXSTYLE = <span style="color: #66cc66;">(</span><span style="color: #cc66cc;">-20</span><span style="color: #66cc66;">)</span></li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Const</span> LWA_ALPHA = &H2</li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Const</span> WS_EX_LAYERED = &H80000</li><li style="" class="li2"><span style="color: #808080;">'Función que recibe el handle de la ventana y el valor para aplciar la _</span></li><li style="" class="li1"> transparencia</li><li style="" class="li1"><span style="color: #b1b100;">Public</span> <span style="color: #b1b100;">Function</span> Transparencia<span style="color: #66cc66;">(</span>ByVal hwnd <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span>, Valor <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">On</span> Local <span style="color: #b1b100;">Error</span> <span style="color: #b1b100;">GoTo</span> ErrSub</li><li style="" class="li1"> </li><li style="" class="li2"><span style="color: #b1b100;">Dim</span> Estilo <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Long</span></li><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">If</span> Valor < <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Or</span> Valor > <span style="color: #cc66cc;">255</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li2">    Transparencia = <span style="color: #cc66cc;">1</span></li><li style="" class="li1"><span style="color: #b1b100;">Else</span></li><li style="" class="li1"> </li><li style="" class="li2">    Estilo = GetWindowLong<span style="color: #66cc66;">(</span>hwnd, GWL_EXSTYLE<span style="color: #66cc66;">)</span></li><li style="" class="li1">    Estilo = Estilo <span style="color: #b1b100;">Or</span> WS_EX_LAYERED</li><li style="" class="li1">    </li><li style="" class="li2">    SetWindowLong hwnd, GWL_EXSTYLE, Estilo</li><li style="" class="li1">    </li><li style="" class="li1">    <span style="color: #808080;">'Aplica el nuevo estilo con la transparencia</span></li><li style="" class="li2">    SetLayeredWindowAttributes hwnd, <span style="color: #cc66cc;">0</span>, Valor, LWA_ALPHA</li><li style="" class="li1">    </li><li style="" class="li1">    Transparencia = <span style="color: #cc66cc;">0</span></li><li style="" class="li2"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">If</span> <span style="color: #b1b100;">Err</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li2">    Transparencia = <span style="color: #cc66cc;">2</span></li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li1">    </li><li style="" class="li2"><span style="color: #b1b100;">Exit</span> <span style="color: #b1b100;">Function</span></li><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #808080;">'Error</span></li><li style="" class="li2">ErrSub:</li><li style="" class="li1">   </li><li style="" class="li1">   <span style="color: #b1b100;">MsgBox</span> <span style="color: #b1b100;">Err</span>.<span style="color: #66cc66;">Description</span>, <span style="color: #b1b100;">vbCritical</span>, <span style="color: #ffffff;">"Error"</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Function</span></li></ol></div>[/vb]
--------------------------------------------------------------------------

Una ves realizado eso, en un formulario ponen esto, aca se los dejo completo:


-------------------------------------------------------------------------
[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"><span style="color: #808080;">'Aca declaramos</span></li><li style="" class="li1"><span style="color: #b1b100;">Dim</span> i <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Sub</span> Form_Load<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span></li><li style="" class="li1"> </li><li style="" class="li2"><span style="color: #b1b100;">If</span> <span style="color: #b1b100;">Not</span> Transparencia<span style="color: #66cc66;">(</span><span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">hWnd</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">)</span> = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li1">    </li><li style="" class="li1">    <span style="color: #b1b100;">MsgBox</span> <span style="color: #ffffff;">" Esta función Api no es soportada en Versiones"</span> _</li><li style="" class="li2">           & <span style="color: #ffffff;">"anteriores a windows 2000"</span>, <span style="color: #b1b100;">vbCritical</span></li><li style="" class="li1">    <span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">Show</span></li><li style="" class="li1"><span style="color: #b1b100;">Else</span></li><li style="" class="li2"> </li><li style="" class="li1">    <span style="color: #808080;">' Gradua la transparencia del formulario hasta hacerla visible _</span></li><li style="" class="li1">     es decir desde el valor <span style="color: #cc66cc;">0</span> hasta el <span style="color: #cc66cc;">255</span></li><li style="" class="li2">    </li><li style="" class="li1">    <span style="color: #808080;">'desactiva el Formulario</span></li><li style="" class="li1">    <span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">Enabled</span> = <span style="color: #b1b100;">False</span></li><li style="" class="li2">    <span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">Show</span></li><li style="" class="li1">    </li><li style="" class="li1">    <span style="color: #b1b100;">For</span> i = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">To</span> <span style="color: #cc66cc;">255</span> Step <span style="color: #cc66cc;">2</span></li><li style="" class="li2">        <span style="color: #808080;">' Va aplicando los distintos valores y grados de transparencia al form</span></li><li style="" class="li1">        <span style="color: #b1b100;">Call</span> Transparencia<span style="color: #66cc66;">(</span><span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">hWnd</span>, i<span style="color: #66cc66;">)</span></li><li style="" class="li1">        <span style="color: #b1b100;">DoEvents</span></li><li style="" class="li2">    <span style="color: #b1b100;">Next</span></li><li style="" class="li1">    </li><li style="" class="li1">    <span style="color: #808080;">'reactiva la ventana</span></li><li style="" class="li2">    <span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">Enabled</span> = <span style="color: #b1b100;">True</span></li><li style="" class="li1">     </li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></li><li style="" class="li1"> </li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #808080;">'Al descargar la ventana hace el efecto FadeOut, osea cuando el formulario desaparece</span></li><li style="" class="li1"><span style="color: #b1b100;">Private</span> <span style="color: #b1b100;">Sub</span> Form_QueryUnload<span style="color: #66cc66;">(</span>Cancel <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span>, UnloadMode <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span><span style="color: #66cc66;">)</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">If</span> <span style="color: #b1b100;">Not</span> Transparencia<span style="color: #66cc66;">(</span><span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">hWnd</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">)</span> = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li1">    <span style="color: #b1b100;">Exit</span> <span style="color: #b1b100;">Sub</span></li><li style="" class="li2"><span style="color: #b1b100;">Else</span></li><li style="" class="li1">    <span style="color: #808080;">' Gradua la transparencia del formulario hasta hacerla invisible y luego se descarga, desde el valor 255 hasta el 0</span></li><li style="" class="li1">    <span style="color: #b1b100;">For</span> i = <span style="color: #cc66cc;">255</span> <span style="color: #b1b100;">To</span> <span style="color: #cc66cc;">0</span> Step <span style="color: #cc66cc;">-3</span></li><li style="" class="li2">        <span style="color: #b1b100;">DoEvents</span></li><li style="" class="li1">        <span style="color: #b1b100;">Call</span> Transparencia<span style="color: #66cc66;">(</span><span style="color: #b1b100;">Me</span>.<span style="color: #66cc66;">hWnd</span>, i<span style="color: #66cc66;">)</span></li><li style="" class="li1">        <span style="color: #b1b100;">DoEvents</span></li><li style="" class="li2">    <span style="color: #b1b100;">Next</span></li><li style="" class="li1">    </li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li2"> </li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></li></ol></div>[/vb]
-------------------------------------------------------------------------

Bueno eso es todo, se puede aplicar en el Argentum, en el cliente para darle un toque mas de creatividad :p, espero que les guste!.

Saludos!

PD: Cualquier duda pregunten, las respondere con gusto :)
 

Chily

Yo le hice un gol a GS
RaYdeN.ADM dijo:
creo un modulo nuevo.. y el formulario.. es alguno en especial.. o también uno nuevo?

mm mucho no leí, pero supongo que en form que le queres dar transparencia..
 

Grefu

GeNio a SeKaS
Ex-Staff
LA segunda parte del codigo es para poner en el formulario, una vez que lo pongas se hace transparente CHAN¡¡
 

Pocho

Oráculo Lvl 3
busca esto

Call Transparencia(Me.hWnd, i)


y en vez de ME

ponele por ej

frmmain.hwnd

oo cualqiera
 
Estado
Cerrado para nuevas respuestas.
Arriba