Hola invitado         31 Jul, 2010 - 07:39
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Formularios transparentes en Visual FoxPro al descubierto (Bernard Bout) Traducc lecturas 9690
 Enviado por amby en Miércoles, 22 Noviembre, 2006
Artículos Siguiendo el tema de los formularios transparentes en VFP, ahora sí tenemos el código que se ha empleado para lograrlo.

Formularios transparentes en Visual FoxPro al descubierto

Artículo original: Transparent Forms in Visual FoxPro Revealed
http://weblogs.foxite.com/bernardbout/archive/2006/08/27/2353.aspx
Autor: Bernard Bout (http://weblogs.foxite.com/bernardbout)
Traducido por: Ana María Bisbé York (amby@telefonica.net)
Para: PortalFox (http://www.portalfox.com)


Cómo se ha hecho

Mi post anterior fue algo vago a propósito porque yo quería despertar un poco más de interés. Sólo describir el método utilizado para describir el efecto podría ser mucho más sencillo; pero el interés hubiera terminado ahí.

Muchos lectores "picaron". Algunos pensaron significativamente diferente a lo que yo había hecho, no obstante existen muchas formas de cambiar el diseño. Otros sencillamente no lo hicieron.

En cualquier caso, en esta entrada voy a describir el método que he utilizado para alcanzar el efecto medio transparente de un formulario. Espero que los lectores piensen sobre las técnicas utilizadas y lleguen a su propia forma de hacerlo.

El formulario principal es un formulario SDI con mi clase de navegación "Outlook". Básicamente seleccionando una opción al hacer clic en los botones azules llena un árbol debajo con las ventanas disponibles. Haga clic sobre uno de estos abre una ventana a la derecha donde tiene lugar la acción. Hasta aquí todo se entiende. El formulario SDI tiene una gran imagen de fondo.

Justo debajo de "Product ordering" se puede ver "X". Esto, normalmente tiene Visible = .F. y lo empleo como marcador.

Para mi formulario hijo, creé una clase formulario y todos los formularios hijo heredan de esta clase. Esta clase formulario es un formulario normal con TitleBar = 0 y BorderStyle = 0 (sin borde). Luego le di el tamaño requerido.

Abrí la gran imagen de fondo y copié un área de esta comenzando por la "X" que está debajo en el botón a la derecha. Ahora tengo una imagen más pequeña que la imagen principal. Apliqué una capa de máscara blanca sobre ella y ajusté la transparencia de la máscara, similar a lo que hace Word cuando se crea una marca de agua. Obtuve la imagen que se muestra debajo.

Así hice el fondo de mi clase formulario. Tuve que ajustar manualmente el tamaño del formulario hasta que alcanzó justamente el tamaño de la imagen. Ahora tengo una clase base que puedo utilizar para todos mis formularios. He aquí uno de los formularios hijo en tiempo de diseño.

Cada formulario hijo se creó entonces como un formulario normal con objetos y código. El evento Click de cada elemento del árbol abre el formulario adecuado.

En el INIT de la clase formulario agregué este código:

LPARAMETERS toForm
With ThisForm
  * LabelX es el nombre del objeto etiqueta con caption “X” y color rojo  .
  .Top = toForm.LabelX.Top
  .Left = toForm.LabelX.Left
ENDWITH 

En el Click del elemento del árbol se llama al formulario adecuado de la siguiente forma:

DO Form MyChildForm With ThisForm NOSHOW
SHOW Window MyChildForm IN WINDOW Mainform

Con este código el formulario hijo aparece en el lugar correcto y se moverá si el formulario principal se mueve. No se puede redimensionar por razones obvias. En las pruebas he ajustado a la "X" para que las imágenes estén alineadas correctamente.

El efecto final se puede ver en esta pantalla de abajo. A propósito he dejado un borde más ancho alrededor del formulario hijo de tal forma que el efecto sea más obvio.

Esto amplía el límite del formulario y muestra el efecto:

Esto da la impresión que el formulario hijo es transparente y que la imagen del formulario principal puede ser vista a través de el. Los controles son opacos como deben ser. Este efecto no puede lograrse normalmente en Windows XP. Solamente es posible con Vista y nuevas APIs.

Completada la ilusión

¡ Viva la Fox !

He aquí otro enlace con una forma similar que muestra el efecto: http://www.foxite.com/archives/seethrough-form-0000105324.htm


 Versión imprimible  
Formularios transparentes en Visual FoxPro al descubierto (Bernard Bout) Traducc | Entrar/Crear una cuenta | 1 Comentario
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Formularios transparentes en Visual FoxPro al descubierto (Bernard Bout) Traducc


por cyrox en 22 Nov, 2006 - 11:18
(Información del usuario  | Enviar un mensaje http://)
hola gnete... me parece muy bonito... pero propongo otra solucion... muy larga y lenta... pero no me ata los forms ni las clases de forms a una sola imagen!...
tengo entendido que para que una imagen sea el fondo de pantalla... esta debe existir fisicamente (espero confudirme)... aunque no sea asi... a traves de GDI+... al iniciar el form... podemos tomar la imagen del fondo... recortarla desde el top y left del form hasta el width y height del mismo form.... y kambiarle el brillo y contraste (tenemos un monton de ejemplos de Cesar Chalom)... guardar esa imagen temporalmente... y ponerla como picture del form que se abrio... puede ser una opcion... quizas sea un poco lenta... pero el usuario puede definir el fondo que quiere... y los forms se "transparentizan" de acuerdo a esa imagen... espero entiendan y me avisen si funciona!!!... nos vemos...
Saludos desde la calurosa Asuncion!!!... Guille...




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.