PDA

Ver la Versión Completa : Fade in/out en formularios


elrayo76
19-06-2018, 15:23:42
Gente,

Alguien sabe como se puede hacer un Fade in/out en los formularios. Lo que quiero es que un formulario que se abre junto a los iconos de notificaciones o en algun otro lado de mi aplicación este un tiempo visible y luego se cierre solo usando Fade

Saludos

TOPX
19-06-2018, 16:29:59
En lugar de hacer un Form con esa funcionalidad, le propongo que despliegue una notificación, con alguna de las ideas que muestran en:

Using Notifications - Embarcadero docWiki (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Notifications)
Different ways of show notifications from tray bar - stack Overflow (https://stackoverflow.com/questions/4671009/different-ways-of-show-notifications-from-tray-bar)
Mensaje / notificación - Club Delphi (http://www.clubdelphi.com/foros/showthread.php?t=89506)

Si, a pesar de todo, aún quiere desvanecer un Form, vea:
Vcl.Forms.TForm.AlphaBlend - Embarcadero docWiki (http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Forms.TForm.AlphaBlend)

-

Neftali [Germán.Estévez]
19-06-2018, 16:51:29
Puedes hacerlo utilizando la API de windows AnimateWindow (https://msdn.microsoft.com/es-es/library/windows/desktop/ms632669(v=vs.85).aspx).
Si creas un formulario con un botón y un label y colocas este código puedes probarlo.




uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TFormMain = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
procedure ShowForm;
end;

var
FormMain: TFormMain;

implementation

{$R *.dfm}

procedure TFormMain.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow(FormMain.Handle, 2000, AW_SLIDE or AW_HIDE or AW_BLEND);
FormMain.Hide;
end;

procedure TFormMain.FormShow(Sender: TObject);
begin
ShowForm;
end;

procedure TFormMain.ShowForm;
begin
Self.Left := 500;
Self.Top := 500;
AnimateWindow(FormMain.Handle, 2000, AW_SLIDE or AW_BLEND);
end;




El efecto final será algo así (no se si se acerca a lo que quieres).


https://s26.postimg.cc/sc4p7b689/Formulario_Fade_In_Out.gif


Otra opción "manual" que puedes `robar es utilizar un Timer y las propiedades AlphaBlend y AlphaBlendValue del formulario para conseguir algo parecido.