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
Luis María Guayán
Muy bueno, gracias.
ResponderBorrarExcelente, gracias
ResponderBorrar