Publicentral.com - alta en buscadores, registro buscadores, promocionaPromocion en buscadores y negocios online
Mostrando Codigo - Visual Basic
Code

Visual Basic - Formulario transparente

Códigos Visual Basic

Para personalizar nuestras aplicadiones y crear un formulario transparente estas lineas pueden ser muy utiles En primer lugar debemos crear un modulo Proyecto > Agregar modulo Posteriormente insertar las lineas en el formulario, ademas de todos los controles que queramos, asi como botones, campos de texto, etc...
Visitas: 37,214 - 09/05/2004 0:03:47
CODIGO SIN DEMOSTRACIONNO CONTIENE ARCHIVO DESCARGABLEComentario
CODIGO


// Codigo ofrecido por Tutores.org

  1. ' ---------- MODULO
  2. Option Explicit
  3. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
  4. ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  5. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As _
  6. Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal _
  7. nCombineMode As Long) As Long
  8. Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As _
  9. Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
  10.  
  11. Public Sub TransparentForm(frm As Form)
  12.     frm.ScaleMode = vbPixels
  13.     Const RGN_DIFF = 4
  14.     Const RGN_OR = 2
  15. Dim outer_rgn As Long
  16.     Dim inner_rgn As Long
  17.     Dim wid As Single
  18.     Dim hgt As Single
  19.     Dim border_width As Single
  20.     Dim title_height As Single
  21.     Dim ctl_left As Single
  22.     Dim ctl_top As Single
  23.     Dim ctl_right As Single
  24.     Dim ctl_bottom As Single
  25.     Dim control_rgn As Long
  26.     Dim combined_rgn As Long
  27.     Dim ctl As Control
  28.  If frm.WindowState = vbMinimized Then Exit Sub
  29.   wid = frm.ScaleX(frm.Width, vbTwips, vbPixels)
  30.     hgt = frm.ScaleY(frm.Height, vbTwips, vbPixels)
  31.     outer_rgn = CreateRectRgn(0, 0, wid, hgt)
  32.  
  33.     border_width = (wid - frm.ScaleWidth) / 2
  34.     title_height = hgt - border_width - frm.ScaleHeight
  35.     inner_rgn = CreateRectRgn(border_width, title_height, wid - border_width, _
  36.         hgt - border_width)
  37.     combined_rgn = CreateRectRgn(0, 0, 0, 0)
  38.     CombineRgn combined_rgn, outer_rgn, inner_rgn, RGN_DIFF
  39.     For Each ctl In frm.Controls
  40.         If ctl.Container Is frm Then
  41.             ctl_left = frm.ScaleX(ctl.Left, frm.ScaleMode, vbPixels) _
  42.                 + border_width
  43.             ctl_top = frm.ScaleX(ctl.Top, frm.ScaleMode, vbPixels) + title_height
  44.             ctl_right = frm.ScaleX(ctl.Width, frm.ScaleMode, vbPixels) + ctl_left
  45.             ctl_bottom = frm.ScaleX(ctl.Height, frm.ScaleMode, vbPixels) + ctl_top
  46.             control_rgn = CreateRectRgn(ctl_left, ctl_top, ctl_right, ctl_bottom)
  47.             CombineRgn combined_rgn, combined_rgn, control_rgn, RGN_OR
  48.         End If
  49.     Next ctl
  50.     SetWindowRgn frm.hWnd, combined_rgn, True
  51. End Sub
  52.  
  53. ' ---------- FORMULARIO
  54. Private Sub Form_Resize()
  55.     TransparentForm Me
  56. End Sub



ENLACE AL CODIGO
Si quieres enlazar desde tu pagina a este codigo
<!-- Inicio enlace Tutores.org -->
<a title="Tutores.org - Formulario transparente" href="http://www.tutores.org/codigo/1069/" target="_blank">Formulario transparente</a>
<!-- Final enlace Tutores.org -->
COMENTARIOS
Comentario usuario
euripides triana
1 5
Amigo sabe usted como colocar un label o un texto en un formulario de tal forma que todo que de transparente y se pueda ver el escritorio de windows ???
Comentario usuario
sol santos
1 5
ese código esta de "superluxe", ando en eso de los "pininos" de la programación.... supongo que han oido hablar de los novatos de la programación... pues bueno... yo ni siquiera alcanzo esa clasificación.... ja ja ja... pero esa ventana transparente me dejo con la bocota abierta.... chao.... gracias MIL por la transmisión de sus conocimientoS.... SUERTE
Comentario usuario
xInfinitox
1 5
Mmm... pues si esta interesante esta web.. la verdad es que esta loco...

Gracias, de verdad que nesecitaba este código.

Gracias... Gracias...
Comentario usuario
Petrófocles
3 5
jaja si esta muy bueno haber que sale si lo uso
Comentario usuario
rixio
2 5
Saludos, ps yo intente utilizarlo y no funciono, he correjido el codigo pero aun asi no se muestran los conttroles

alli les va...

Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As _
Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal _
nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As _
Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long

Public Sub TransparentForm(frm As Form)
frm.ScaleMode = vbPixels
Const RGN_DIFF = 4
Const RGN_OR = 2
Dim outer_rgn As Long
Dim inner_rgn As Long
Dim wid As Single
Dim hgt As Single
Dim border_width As Single
Dim title_height As Single
Dim ctl_left As Single
Dim ctl_top As Single
Dim ctl_right As Single
Dim ctl_bottom As Single
Dim control_rgn As Long
Dim combined_rgn As Long
Dim ctl As Control
If frm.WindowState = vbMinimized Then Exit Sub
wid = frm.ScaleX(frm.Width, vbTwips, vbPixels)
hgt = frm.ScaleY(frm.Height, vbTwips, vbPixels)
outer_rgn = CreateRectRgn(0, 0, wid, hgt)

border_width = (wid - frm.ScaleWidth) / 2
title_height = hgt - border_width - frm.ScaleHeight
inner_rgn = CreateRectRgn(border_width, title_height, wid - border_width, _
hgt - border_width)
combined_rgn = CreateRectRgn(0, 0, 0, 0)
CombineRgn combined_rgn, outer_rgn, inner_rgn, RGN_DIFF
'--------- CORRECCION
For Each ctl In frm
If TypeOf ctl Is Form Then
ctl_left = frm.ScaleX(ctl.Left, frm.ScaleMode, vbPixels) _
+ border_width
ctl_top = frm.ScaleX(ctl.Top, frm.ScaleMode, vbPixels) + title_height
ctl_right = frm.ScaleX(ctl.Width, frm.ScaleMode, vbPixels) + ctl_left
ctl_bottom = frm.ScaleX(ctl.Height, frm.ScaleMode, vbPixels) + ctl_top
control_rgn = CreateRectRgn(ctl_left, ctl_top, ctl_right, ctl_bottom)
CombineRgn combined_rgn, combined_rgn, control_rgn, RGN_OR
End If
Next ctl
'---------------------
SetWindowRgn frm.hWnd, combined_rgn, True
End Sub


estas correcciones son el el modulo
suerte
Comentario usuario
30-03-2009 15:53:23
4 5
K loko lastima k no funcione Saludos
Comentario usuario
28-04-2009 08:38:09
4 5
gracias ehh. funcion bien de bien
Comentario usuario
Sin definir
5 5
eso no sirve para visual 2008
Comentario usuario
Fugitivo
4 5
gracias, me has salvado jeje
Comentario usuario
Hangman Joke
4 5
muchas gracias eres un gruesso esta es lo que buscaba desde hace rato me gustaria saber mas de este tema si puede has un tutorial de como hacerlo mas explicado...

gracias
Comentario usuario
16-12-2010 02:17:44
3 5
En tu 1º código, he puesto un control image en blanco para luego cargar una imágen, pero antes de cargarla, se ve el control image, ¿no hay forma de que el control tambien sea transparente hasta que cargue la imágen?.

Gracias
Comentario usuario
24-06-2007 20:23:31
5 5
excelente información, sigue así...
INSERTAR COMENTARIO

Usuario:
Email:
Comentario:
Codigo Seguridad


Antes de enviar un comentario...
Todos los comentarios son revisados personalmente
Todo comentario que no haga relacion al codigo mostrado en esta pagina sera eliminado

Usuarios registrados tienen preferencia en recibir respuestas de ayuda!!
Ademas de poder insertar Imagenes,Enlaces y otras propiedades del editor.
Por favor, insertar los comentarios descriptivos.