Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   timer +1 (https://www.clubdelphi.com/foros/showthread.php?t=25733)

slim jim 02-10-2005 03:03:35

timer +1
 
hola, me gustaria hacer ke mi aplicacion apareciera poco a poco usando AlphaBlendValue (de la form) e intente haciendolo con un timer ke hiciera ke la variable se aumentara +1 pero el problema es ke soi nuevo con esto de las variables y no se que me esta fallando :(

Código Delphi [-]
unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ExtCtrls;
 
 type
   TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
   blaz: integer = 1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   form1.AlphaBlend:=true;
   form1.AlphaBlendValue:= blaz;
 end;
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 begin
   form1.AlphaBlendValue:= blaz +1;
 end;
 
 end.
aqui esta el codigo.. alguien me puede explicar por ke no me funciona? :(

grax

dec 02-10-2005 03:39:59

Hola,

Fíjate que no estás incrementando el valor de la variable "blaz", de tal modo que "AlphaBlendValue" valdrá siempre dos, esto es, "blaz + 1" (recuerda que "blaz" la inicializas en 1). Por otro lado podrías omitir el uso de dicha variable, incrementando el valor de "AlphaBlendValue" directamente, tal que así:

Código Delphi [-]
  AlphaBlendValue := AlphaBlendValue + 1;
En cualquier caso vigila estas dos cosas: primero, controla que al llegar a "AlphaBlendValue >= 255" paras el "TTimer", puesto que si este continúa habilitado la variable "AlphaBlendValue" se reiniciará a cero, creándose un "bucle infinito"; segundo, por si no lo sabías, te recuerdo que la transparencia de los formularios está disponible en Windows XP y no sé si Windows 2000, pero, desde luego, no en ninguna otra versión anterior de Windows.

dec 02-10-2005 03:47:13

Hola,

Recordé este Hilo publicado hace tiempo y, para lograr un efecto como el que precisas, no necesitas sino la siguiente instrucción en el evento "OnCreate" del formulario:

Código Delphi [-]
  AnimateWindow(Form1.Handle, 1000, AW_BLEND);
De todos modos (no estoy ahora del todo seguro) es posible que el efecto "de transparencia" siga sin ser válido en todas las versiones de Windows.

Actualización: Según la descripción de la función "AnimateWindow" que puede encontrarse aquí mismo dicha función está disponible en Windows 98 y Windows 2000... desde luego también en Windows Xp e ignoro si en otras versiones de Windows.

slim jim 02-10-2005 03:55:54

gracias por responderme :) se me hizo mas manejable el ke me diste primero (alphablendvalue := alphablendvalue +1) ya lo prove y me funciono como lo esperaba :D

dec 02-10-2005 04:03:11

Hola,

Yo me plantearía el uso de la función "AnimateWindow". Primeramente porque lo considero más sencillo: no necesitas "TTimer". En segundo lugar porque dicha función parece estar disponible a partir de Windows 98, mientras que la propiedad "AlphaBlend" (según la ayuda en Delphi) no funcionará en máquinas que no tengan instalada una versión de Windows 2000 ó superior. Pero, en fin, el programa lo haces tú, pues no faltaba más. ;)


La franja horaria es GMT +2. Ahora son las 00:35:39.

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