Formularios transparentes

01/03/2020

 

Una forma de hacer transparentes nuestros formularios de nivel superior (ShowWindow = 2).

 

PUBLIC goform  
m.goform = NEWOBJECT("MiFormTopLevel") 
m.goform.SHOW(1)
RETURN 

  DEFINE CLASS MiFormTopLevel AS FORM
    SHOWWINDOW = 2 && Formulario de nivel superior 
    AUTOCENTER = .T.   
    CAPTION = "Mi Formulario Transparente"  
    NAME = "frmMiForm" 

    ADD OBJECT lblOpac AS LABEL WITH ;  
      FONTBOLD = .T., ;    
      FONTSIZE = 20, ;  
      LEFT = 50, ;   
      TOP = 45, ; 
      CAPTION = "Opacidad:", ; 
      AUTOSIZE = .T., ;      NAME = "lblOpac"  

    ADD OBJECT sprOpac AS SPINNER WITH ;   
       FONTBOLD = .T., ;  
       FONTSIZE = 20, ;  
       HEIGHT = 40, ;   
       LEFT = 200, ;
       TOP = 40, ;  
       WIDTH = 80, ; 
       VALUE = 75, ; 
       INCREMENT =   5, ; 
       KEYBOARDHIGHVALUE = 100, ;
       KEYBOARDLOWVALUE = 10, ;
       SPINNERHIGHVALUE = 100, ;
       SPINNERLOWVALUE =  10, ;   
       NAME = "sprOpac" 

    PROCEDURE LOAD 
      IF VAL(OS(3)) >= 5  && Windows 2000 o superior  
        LOCAL lnOpacidad 

        m.lnOpacidad = 75 && Porcentaje de opacidad   
        m.lnOpacidad = 255 * MIN(MAX(m.lnOpacidad,0),100) / 100 

        DECLARE SetWindowLong ;
          IN WIN32API ;  
          AS __SetWindowLong ;   
          INTEGER, ; 
          INTEGER, ; 
          INTEGER   

        DECLARE SetLayeredWindowAttributes ; 
          IN WIN32API ;
          AS __SetLayeredWindowAttributes ;  
          INTEGER, ;
          STRING, ;
          INTEGER, ;
          INTEGER 

        __SetWindowLong(THISFORM.HWND, -20, 0x00080000) 
        __SetLayeredWindowAttributes(THISFORM.HWND, 0, m.lnOpacidad, 2) 
      ENDIF  
    ENDPROC  

    PROCEDURE sprOpac.INTERACTIVECHANGE 
      IF VAL(OS(3)) >= 5  && Windows 2000 o superior
        LOCAL lnOpacidad  
        m.lnOpacidad = THIS.VALUE 
        m.lnOpacidad = 255 * MIN(MAX(m.lnOpacidad,0),100) / 100  
        __SetLayeredWindowAttributes(THISFORM.HWND, 0, m.lnOpacidad, 2)    
      ENDIF    
    ENDPROC  

  ENDDEFINE

 

Vea también

 

Descarga

Clase Vcx, para crear formularios transparentes o de distintas formas

 


 

Referencias

Artículo original en: Comunidad de Visual FoxPro en Español

Autor: Luis María Guayán

 


 

 

 



error: Contenido protegido