Encontre este procedimiento
Código Delphi
[-]
procedure FadeControl(AControl : TWinControl);
Var
Bitmap : TBitmap;
Canvas : TControlCanvas;
Func : TBlendFunction;
R : TRect;
Opacity : Integer;
Begin
If (AControl = nil) or (AControl.Parent = nil) or not AControl.Visible Then
Exit;
Bitmap := TBitmap.Create;
Canvas := TControlCanvas.Create;
Try
With AControl Do Begin
Bitmap.Width := Width;
Bitmap.Height := Height;
Canvas.Control := AControl;
Bitmap.Canvas.CopyRect(ClientRect, Canvas, ClientRect);
Hide;
Func.BlendOp := AC_SRC_OVER;
Func.BlendFlags := 0;
Func.AlphaFormat := 0;
Canvas.Control := Parent;
Parent.DoubleBuffered := True;
Opacity := 100;
While Opacity > 20 Do Begin
R := ClientRect;
OffsetRect(R, Left, Top);
InvalidateRect(Parent.Handle, @R, False);
Parent.Update;
Func.SourceConstantAlpha := Opacity;
AlphaBlend(Canvas.Handle, Left, Top, Width, Height,
Bitmap.Canvas.Handle, 0, 0, Width, Height,
Func);
Sleep(50);
Dec(Opacity, 20);
exit;
End;
End;
Canvas.Control.Invalidate;
finally
Bitmap.Free;
Canvas.Free;
End;
End;
Funciona bastante bien. el problema es que una ves que se vuelve transparente el componente, por ejemplo un boton ya no se puede usar. alguien tal ves se anima a modificarlo para que se puedan manejar con normalidad los componentes luego de volverlos trasparentes?
gracias.