Un componente para hacer transparente (en forma de) las formas


El siguiente código es para un componente que puede crear transparente (en forma de) formas ...
El siguiente código es para un componente que puede crear transparente (forma) de las formas utilizando mapas de bits o controles, o ambos. Hay dos maneras de decirle a la componente de lo que usted desea utilizar como máscara: la Etiqueta de configuración (TransTag) o un Componente de la lista donde usted sólo tiene que insertar el nombre del componente como una nueva línea de texto.
Hay incluso un caso de seguir el progreso del proceso, cuando es largo.
Para que las imágenes no es un Color de la Máscara de la propiedad, que es el color que va a ser transparente.
Utilizar el método Execute para hacer la forma transparente. Cuando no hay una gran cantidad de imágenes, el proceso es bastante rápido y se puede utilizar para crear efectos de animación en el escritorio.
NOTA: para la creación de la Máscara de imágenes de la componente toma en cuenta el componente TImage.
unidad de TransMake
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,ExtCtrls
tipo
& nbsp & nbsp TProcessEvent=procedimiento(progreso:longint) del objeto
& nbsp & nbsp TBy =(TBTag,TBComponentList)
& nbsp & nbsp TTransMake = clase(TComponent)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp ITransTag:integer
& nbsp & nbsp & nbsp & nbsp ImageTrans:Boolean
& nbsp & nbsp & nbsp & nbsp ColorMask:TColor
& nbsp & nbsp & nbsp & nbsp región:hrgn
& nbsp & nbsp & nbsp & nbsp TransByV:TBy
& nbsp & nbsp & nbsp & nbsp ComponentListV:TStrings
& nbsp & nbsp & nbsp & nbsp fullitems:LongInt
& nbsp & nbsp & nbsp & nbsp FOnProgress:TProcessEvent
& nbsp & nbsp & nbsp & nbsp procedimiento DrawTransparent
& nbsp & nbsp & nbsp & nbsp procedimiento ComponentListWrite(valor:TStrings)
& nbsp & nbsp & nbsp & nbsp procedimiento SetTransBy(valor:TBy)
& nbsp & nbsp protegido
& nbsp & nbsp & nbsp & nbsp { declaraciones Protegidos }
& nbsp & nbsp & nbsp & nbsp procedimiento DoOnProgress(progreso:longint) dinámico
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Públicos declarations }
& nbsp & nbsp & nbsp & nbsp Procedimiento de Ejecución
& nbsp & nbsp & nbsp & nbsp Constructor Create(AOwner:TComponent) reemplazar
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp { Publicado declaraciones }
& nbsp & nbsp & nbsp & nbsp Propiedad TransTag:Entero leer ITransTag escribir ITransTag
& nbsp & nbsp & nbsp & nbsp Propiedad ImageRegion:boolean leer ImageTrans escribir ImageTrans
& nbsp & nbsp & nbsp & nbsp propiedad MaskColor:TColor leer ColorMask escribir ColorMask
& nbsp & nbsp & nbsp & nbsp propiedad TransBy:TBy leer TransByV escribir SetTransBy defecto TBTag
& nbsp & nbsp & nbsp & nbsp propiedad ComponentList:TStrings leer ComponentListV escribir ComponentListWrite
& nbsp & nbsp & nbsp & nbsp propiedad OnProgress:TProcessEvent leer FOnProgress escribir FOnProgress
& nbsp & nbsp final
procedimiento de Registro
aplicación
procedimiento TTransMake.DoOnProgress(progreso:longint)
begin
& nbsp & nbsp si se ha asignado(FonProgress), a continuación,
& nbsp & nbsp & nbsp & nbsp TProcessEvent(FonProgress)(progreso)
fin
procedimiento TTransMake.SetTransBy(Valor:TBy)
begin
& nbsp & nbsp TransByV := Valor
fin
procedimiento TTransMake.ComponentListWrite(Valor:TStrings)
begin
& nbsp & nbsp ComponentListV.Asignar(valor)
fin
constructor TTransMake.Create(AOwner:TComponent)
begin
& nbsp & nbsp inherited Create(AOwner)
& nbsp & nbsp ComponentListV:=TStringList.Crear
& nbsp & nbsp ComponentListV.Add('Lugar de su componente de nombres aquí.')
& nbsp & nbsp FullItems:=0
fin
procedimiento TTransMake.DrawTransparent
var
& nbsp & nbsp OForm:TForm
& nbsp & nbsp & nbsp & nbsp i,o,x,y,rx,ry:integer
& nbsp & nbsp & nbsp & nbsp tr:Trect
& nbsp & nbsp & nbsp & nbsp tregion,imgregion:Hrgn
& nbsp & nbsp & nbsp & nbsp proceder:boolean
& nbsp & nbsp TempBitmap: TBitmap
& nbsp & nbsp Rgn1, Rgn2: HRgn
& nbsp & nbsp Col, StartCol, Fila,de la prueba: integer
& nbsp & nbsp Línea: PByteArray
& nbsp & nbsp haciendo,perc:integer
begin
& nbsp & nbsp OForm:=TForm(propietario)
& nbsp & nbsp región:=0
& nbsp & nbsp imgregion:=0
& nbsp & nbsp rgn1:=0
& nbsp & nbsp fullitems:=0
& nbsp & nbsp haciendo:=0
& nbsp & nbsp perc:=0
& nbsp & nbsp región:=createRectRgn(0,0,0,0)
& nbsp & nbsp rgn1:=createRectRgn(0,0,0,0)
& nbsp & nbsp OForm.visible:=false
& nbsp & nbsp OForm.BorderStyle:=bsNone
& nbsp & nbsp for i:=0 a OForm.ComponentCount-1 hacer
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBTag, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.Componentes[i]).tag=TransTag, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fullitems:=fullitems 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBComponentList, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si componentlistV.Count>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp para o:=0 a componentlistv.Count-1 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (en Mayúsculas((OForm.Componentes[i]).nombre)=mayúsculas(componentlistv.Cadenas[o])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fullitems:=fullitems 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp for i:=0 a OForm.ComponentCount-1 hacer
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=false
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBTag, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.Componentes[i]).tag=TransTag, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBComponentList, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si componentlistV.Count>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp para o:=0 a componentlistv.Count-1 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (en Mayúsculas((OForm.Componentes[i]).nombre)=mayúsculas(componentlistv.Cadenas[o])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pro eed:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso de proceder, a continuación,

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TControl(OForm.componentes[i]).visible, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.componentes[i] es TImage) y ImageRegion, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con TImage(OForm.componentes[i]).imagen.mapa de bits
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp de Fila := 0 a TImage(OForm.componentes[i]).imagen.mapa de bits.altura-1 hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Col := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras que Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho de hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho) y (Lienzo.píxeles (col,fila] = ColorMask) inc(Col)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & si nbsp Col >= TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho, a continuación, Continuar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StartCol := Col
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho) y (Lienzo.píxeles (col,fila] <> ColorMask) inc(Col)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & si nbsp Col >= TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho, a continuación, Col := TImage(OForm.componentes[i]).imagen.mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Rgn1 = 0, entonces Rgn1 := CreateRectRgn(TImage(OForm.componentes[i]).a la izquierda StartCol, TImage(OForm.componentes[i]).Fila superior, TImage(OForm.componentes[i]).a la izquierda Col, TImage(OForm.componentes[i]).la parte superior de la Fila 1)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Rgn2 := CreateRectRgn(TImage(OForm.componentes[i]).a la izquierda StartCol, TImage(OForm.componentes[i]).Fila superior, TImage(OForm.componentes[i]).a la izquierda Col, TImage(OForm.componentes[i]).la parte superior de la Fila 1)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Rgn2 <> 0) entonces CombineRgn(Rgn1,Rgn1,Rgn2,RGN_OR)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Deleteobject(Rgn2)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp haciendo:=hace 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp perc:=round(100*(hacer/fullitems))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DoOnProgress(perc)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp combinergn(región,región,rgn1,rgn_or)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp rgn1:=0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr:=TControl(OForm.componentes[i]).BoundsRect
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.a la izquierda:=tr.a la izquierda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Top:=tr.La parte superior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Derecha:=tr.A la derecha
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Parte inferior:=tr.Inferior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp región si=0, entonces
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp región:=createRectRgn(tr.A la izquierda,tr.La parte superior,tr.Derecho,tr.La parte inferior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tregion:=createRectRgn(tr.A la izquierda,tr.La parte superior,tr.Derecho,tr.La parte inferior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp haciendo:=hace 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp perc:=round(100*(hacer/fullitems))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DoOnProgress(perc)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp combinergn(región,región,tregion,rgn_or)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp deleteObject(tregion)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp setwindowrgn(OForm.manejar,región,true)
& nbsp & nbsp OForm.visible:=true
fin
Procedimiento TTransMake.Ejecutar
begin
& nbsp & nbsp DrawTransparent
fin
procedimiento de Registro
begin
& nbsp & nbsp RegisterComponents('VNPVcls', [TTransMake])
fin
final.









Un componente para hacer transparente (en forma de) las formas


Un componente para hacer transparente (en forma de) las formas : Multi-millones de consejos para hacer su vida mas facil.


El siguiente codigo es para un componente que puede crear transparente (en forma de) formas ...
El siguiente codigo es para un componente que puede crear transparente (forma) de las formas utilizando mapas de bits o controles, o ambos. Hay dos maneras de decirle a la componente de lo que usted desea utilizar como mascara: la Etiqueta de configuracion (TransTag) o un Componente de la lista donde usted solo tiene que insertar el nombre del componente como una nueva linea de texto.
Hay incluso un caso de seguir el progreso del proceso, cuando es largo.
Para que las imagenes no es un Color de la Mascara de la propiedad, que es el color que va a ser transparente.
Utilizar el metodo Execute para hacer la forma transparente. Cuando no hay una gran cantidad de imagenes, el proceso es bastante rapido y se puede utilizar para crear efectos de animacion en el escritorio.
NOTA: para la creacion de la Mascara de imagenes de la componente toma en cuenta el componente TImage.
unidad de TransMake
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,ExtCtrls
tipo
& nbsp & nbsp TProcessEvent=procedimiento(progreso:longint) del objeto
& nbsp & nbsp TBy =(TBTag,TBComponentList)
& nbsp & nbsp TTransMake = clase(TComponent)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp ITransTag:integer
& nbsp & nbsp & nbsp & nbsp ImageTrans:Boolean
& nbsp & nbsp & nbsp & nbsp ColorMask:TColor
& nbsp & nbsp & nbsp & nbsp region:hrgn
& nbsp & nbsp & nbsp & nbsp TransByV:TBy
& nbsp & nbsp & nbsp & nbsp ComponentListV:TStrings
& nbsp & nbsp & nbsp & nbsp fullitems:LongInt
& nbsp & nbsp & nbsp & nbsp FOnProgress:TProcessEvent
& nbsp & nbsp & nbsp & nbsp procedimiento DrawTransparent
& nbsp & nbsp & nbsp & nbsp procedimiento ComponentListWrite(valor:TStrings)
& nbsp & nbsp & nbsp & nbsp procedimiento SetTransBy(valor:TBy)
& nbsp & nbsp protegido
& nbsp & nbsp & nbsp & nbsp { declaraciones Protegidos }
& nbsp & nbsp & nbsp & nbsp procedimiento DoOnProgress(progreso:longint) dinamico
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Publicos declarations }
& nbsp & nbsp & nbsp & nbsp Procedimiento de Ejecucion
& nbsp & nbsp & nbsp & nbsp Constructor Create(AOwner:TComponent) reemplazar
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp { Publicado declaraciones }
& nbsp & nbsp & nbsp & nbsp Propiedad TransTag:Entero leer ITransTag escribir ITransTag
& nbsp & nbsp & nbsp & nbsp Propiedad ImageRegion:boolean leer ImageTrans escribir ImageTrans
& nbsp & nbsp & nbsp & nbsp propiedad MaskColor:TColor leer ColorMask escribir ColorMask
& nbsp & nbsp & nbsp & nbsp propiedad TransBy:TBy leer TransByV escribir SetTransBy defecto TBTag
& nbsp & nbsp & nbsp & nbsp propiedad ComponentList:TStrings leer ComponentListV escribir ComponentListWrite
& nbsp & nbsp & nbsp & nbsp propiedad OnProgress:TProcessEvent leer FOnProgress escribir FOnProgress
& nbsp & nbsp final
procedimiento de Registro
aplicacion
procedimiento TTransMake.DoOnProgress(progreso:longint)
begin
& nbsp & nbsp si se ha asignado(FonProgress), a continuacion,
& nbsp & nbsp & nbsp & nbsp TProcessEvent(FonProgress)(progreso)
fin
procedimiento TTransMake.SetTransBy(Valor:TBy)
begin
& nbsp & nbsp TransByV := Valor
fin
procedimiento TTransMake.ComponentListWrite(Valor:TStrings)
begin
& nbsp & nbsp ComponentListV.Asignar(valor)
fin
constructor TTransMake.Create(AOwner:TComponent)
begin
& nbsp & nbsp inherited Create(AOwner)
& nbsp & nbsp ComponentListV:=TStringList.Crear
& nbsp & nbsp ComponentListV.Add('Lugar de su componente de nombres aqui.')
& nbsp & nbsp FullItems:=0
fin
procedimiento TTransMake.DrawTransparent
var
& nbsp & nbsp OForm:TForm
& nbsp & nbsp & nbsp & nbsp i,o,x,y,rx,ry:integer
& nbsp & nbsp & nbsp & nbsp tr:Trect
& nbsp & nbsp & nbsp & nbsp tregion,imgregion:Hrgn
& nbsp & nbsp & nbsp & nbsp proceder:boolean
& nbsp & nbsp TempBitmap: TBitmap
& nbsp & nbsp Rgn1, Rgn2: HRgn
& nbsp & nbsp Col, StartCol, Fila,de la prueba: integer
& nbsp & nbsp Linea: PByteArray
& nbsp & nbsp haciendo,perc:integer
begin
& nbsp & nbsp OForm:=TForm(propietario)
& nbsp & nbsp region:=0
& nbsp & nbsp imgregion:=0
& nbsp & nbsp rgn1:=0
& nbsp & nbsp fullitems:=0
& nbsp & nbsp haciendo:=0
& nbsp & nbsp perc:=0
& nbsp & nbsp region:=createRectRgn(0,0,0,0)
& nbsp & nbsp rgn1:=createRectRgn(0,0,0,0)
& nbsp & nbsp OForm.visible:=false
& nbsp & nbsp OForm.BorderStyle:=bsNone
& nbsp & nbsp for i:=0 a OForm.ComponentCount-1 hacer
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBTag, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.Componentes[i]).tag=TransTag, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fullitems:=fullitems 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBComponentList, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si componentlistV.Count>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp para o:=0 a componentlistv.Count-1 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (en Mayusculas((OForm.Componentes[i]).nombre)=mayusculas(componentlistv.Cadenas[o])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fullitems:=fullitems 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp for i:=0 a OForm.ComponentCount-1 hacer
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=false
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBTag, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.Componentes[i]).tag=TransTag, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp proceder:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TransBy=TBComponentList, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si componentlistV.Count>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp para o:=0 a componentlistv.Count-1 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (en Mayusculas((OForm.Componentes[i]).nombre)=mayusculas(componentlistv.Cadenas[o])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pro eed:=true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso de proceder, a continuacion,

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TControl(OForm.componentes[i]).visible, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (OForm.componentes[i] es TImage) y ImageRegion, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con TImage(OForm.componentes[i]).imagen.mapa de bits
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp de Fila := 0 a TImage(OForm.componentes[i]).imagen.mapa de bits.altura-1 hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Col := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras que Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho de hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho) y (Lienzo.pixeles (col,fila] = ColorMask) inc(Col)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & si nbsp Col >= TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho, a continuacion, Continuar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StartCol := Col
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (Col < TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho) y (Lienzo.pixeles (col,fila] <> ColorMask) inc(Col)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & si nbsp Col >= TImage(OForm.componentes[i]).imagen.mapa de bits.Ancho, a continuacion, Col := TImage(OForm.componentes[i]).imagen.mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Rgn1 = 0, entonces Rgn1 := CreateRectRgn(TImage(OForm.componentes[i]).a la izquierda StartCol, TImage(OForm.componentes[i]).Fila superior, TImage(OForm.componentes[i]).a la izquierda Col, TImage(OForm.componentes[i]).la parte superior de la Fila 1)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Rgn2 := CreateRectRgn(TImage(OForm.componentes[i]).a la izquierda StartCol, TImage(OForm.componentes[i]).Fila superior, TImage(OForm.componentes[i]).a la izquierda Col, TImage(OForm.componentes[i]).la parte superior de la Fila 1)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Rgn2 <> 0) entonces CombineRgn(Rgn1,Rgn1,Rgn2,RGN_OR)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Deleteobject(Rgn2)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp haciendo:=hace 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp perc:=round(100*(hacer/fullitems))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DoOnProgress(perc)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp combinergn(region,region,rgn1,rgn_or)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp rgn1:=0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr:=TControl(OForm.componentes[i]).BoundsRect
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.a la izquierda:=tr.a la izquierda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Top:=tr.La parte superior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Derecha:=tr.A la derecha
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tr.Parte inferior:=tr.Inferior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp region si=0, entonces
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp region:=createRectRgn(tr.A la izquierda,tr.La parte superior,tr.Derecho,tr.La parte inferior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp tregion:=createRectRgn(tr.A la izquierda,tr.La parte superior,tr.Derecho,tr.La parte inferior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp haciendo:=hace 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp perc:=round(100*(hacer/fullitems))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DoOnProgress(perc)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp combinergn(region,region,tregion,rgn_or)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp deleteObject(tregion)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp setwindowrgn(OForm.manejar,region,true)
& nbsp & nbsp OForm.visible:=true
fin
Procedimiento TTransMake.Ejecutar
begin
& nbsp & nbsp DrawTransparent
fin
procedimiento de Registro
begin
& nbsp & nbsp RegisterComponents('VNPVcls', [TTransMake])
fin
final.


Un componente para hacer transparente (en forma de) las formas

Un componente para hacer transparente (en forma de) las formas : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación