Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Question Disolver a un Form al cerrarlo

Hola,
Alguien conoce algún componente de como disolver un Form?, es decir, he visto en el programa Registry Clean Expert (No sé si lo conoceis: http://www.registry-clean.net/) que al salir del mismo (al cerralo) este va disolviendose cual si la transparencia cada vez fuera mayor (va volviendose transparente hasta desaparecer todo el Form), dicha transparencia se ve en en la totalidad del Form.
No es un form del tipo transparente ya que esos Forms conservan las propiedades de la barra del título por ejemplo. Si en Torry's lo hay, con que nombre busco? ó ¿como realizo esta disolución por código para que muestre este efecto al cerrar un Form?
Un Saludo
Responder Con Cita
  #2  
Antiguo 29-01-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Si te refieres a ponerlo transparente degradandolo debes usar las propiedades AlphaBlend y AlphaBlendValue para el caso.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 29-01-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Prueba con la función "AnimateWindow". Por ejemplo, sitúa el siguiente código en el evento "OnClose" del formulario principal de tu aplicación:

Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AnimateWindow(Self.Handle, 500, AW_HIDE or AW_BLEND);
end;
Echa un vistazo a la ayuda de la función "AnimateWindow", puesto que esta te ofrece más posibilidades que las mostradas arriba.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 30-01-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Question

Acabo de leer los post,
He estado intentando con AlphaBlend, en cambio con AnimateWindow lo probaré llegando a casa.

Se me presentó la siguiente duda:

Código Delphi [-]
var
i:integer=255;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
begin
   Form1.AlphaBlend:=true;
   timer1.enabled:=true;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    i:=i-1;
    Form1.AlphaBlendValue:=i;
    if i = 80 then
        timer1.Enabled:=false
end;
end.
En este código no pasa nada, pero si el mismo le implemento a un Button al evento OnClick, si trabaja, ¿donde está la diferencia?, pareciera que no hace caso el Timer al evento OnClose. ¿Donde estoy fallando?
Saludos
Responder Con Cita
  #5  
Antiguo 30-01-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
El problema es que aunque actives el timer la aplicacion se cierra sin esperar a que ocurra el primer evento del timer.

Prueba con esto:

Código:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
begin
  AlphaBlend:=true;
  UpdateWindow(Handle);
  for i:= 50 downto 10 do
    begin
      AlphaBlendValue:= 5*i;
      Sleep(50);
    end;
end;
O prueba con este otro que va haciendo mas pequeño el formulario hasta que desaparece. Hay un monton de posibilidades

Código:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
  Rgn: HRGN;
begin
  for i:= 50 downto 1 do
    begin
      Rgn:= CreateRectRgn(0,0,(width*i) div 50,(height*i) div 50);
      SetWindowRgn(Handle,Rgn,True);
      DeleteObject(Rgn);
      Sleep(50);
    end;
end;
Responder Con Cita
  #6  
Antiguo 31-01-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Sin dar muchas vueltas, creo que es mas factible la solucion propuesta por dec.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 31-01-2006
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
Lightbulb

Cita:
Empezado por Deiv
Hola,
Alguien conoce algún componente de como disolver un Form?, es decir, he visto en el programa Registry Clean Expert (No sé si lo conoceis: http://www.registry-clean.net/) que al salir del mismo (al cerralo) este va disolviendose cual si la transparencia cada vez fuera mayor (va volviendose transparente hasta desaparecer todo el Form), dicha transparencia se ve en en la totalidad del Form.
No es un form del tipo transparente ya que esos Forms conservan las propiedades de la barra del título por ejemplo. Si en Torry's lo hay, con que nombre busco? ó ¿como realizo esta disolución por código para que muestre este efecto al cerrar un Form?
Un Saludo
El componente Billenium Effects hace eso que pides.

Saludos.
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
  #8  
Antiguo 31-01-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs up

Realmente da gusto pertenecer al Foro, hace un mes atrás lo dije, y menciono esto porque muchos colaboran con sus conocimientos y experiencias.

Hubo razón en mis sospechas, al cerrar el Form no funciona el Timer.
El primer código de Seoane, trabaja muy bien la disolución, pero me parece que en la línea:

UpdateWindow(Handle);

Realiza UN DESTELLO antes de disolver el Form. ¿A que se debe ello? ¿como evitarlo?

Saludos
Pd.- De todas maneras probaré todos los otros consejos que aportaron.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08
Al cerrar Form no entra en OnClose nowheremanza OOP 2 13-09-2005 14:04:41
no cerrar el tray kaiser_robert Varios 8 04-07-2005 05:28:00
Poner color background del form cuando pierde el foco Cabanyaler Gráficos 4 25-11-2004 08:32:03
Impedir mover el form y redimensionar al mover barra tareas jealousy API de Windows 0 15-06-2004 12:58:05


La franja horaria es GMT +2. Ahora son las 16:46:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi