[RESUELTO] Letras intermitentes
#1
Escrito 09 febrero 2010 - 12:04
Cual es la mejor forma de poner letras intermitentes en un form de delphi sin utilizar ningun componente.
#2
Escrito 09 febrero 2010 - 03:38
Saludos.
#3
Escrito 09 febrero 2010 - 06:24
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Timer1: TTimer; Edit2: TEdit; procedure Timer1Timer(Sender: TObject); private Flag: integer; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin Flag:= Flag xor 1; Timer1.Enabled:= false; Timer1.Enabled:= true; if (Flag = 1) and (Windows.GetFocus()<>Edit1.Handle) then Edit1.Font.Color:= clWhite else Edit1.Font.Color:= clBlack; end; end.
Cuando Edit1 no tiene foco se vuelve intermitente, si tiene foco para.
Saludos.
Archivos adjuntos
#4
Escrito 09 febrero 2010 - 10:53
DBText9.Visible:=not DBText9.Visible;
Hay alguna diferencia entre hacerlo asi y como indicas, cual crees que sea mas efectivo.
Cuando me referia a componentes, eran de terceros.
La otra solucion que me propones tengo que estudiar como funciona porque ante la simplicidad y facilidad de uso del timer el otro se me hace muy complicado.
Mi unico problema con el timer es que ya tengo dos en ese formulario y no se si me afecte en algo.
#5
Escrito 09 febrero 2010 - 11:53
...Mi unico problema con el timer es que ya tengo dos en ese formulario y no se si me afecte en algo.
NO amigo no afecta en nada salvo si dos timer hacen el mismo trabajo, pero mientras que cada uno haga algo diferente no hay problema .
#6
Escrito 09 febrero 2010 - 11:58
#7
Escrito 09 febrero 2010 - 12:25
Lo que yo una vez hice en mi viejo, y ya perdido, reproductor de música es dotar a algunos labels la capacidad de cambiar el formato cuando se le pasaba el mouse y/o si se les daba un clic. Algo similar a lo que sucede con los enlaces.
No me agrada mucho la idea de más "efectos". Creo que se pierde de vista el atractivo y la objetividad de un sistema. Como quien diría... "no enchules demasiado que después no se sabe que auto es"
El uso de TTimer no aporta demasiada complejidad, ni problemas a un equipo. Pero yo como todo buen y trastornado sujeto saco al filósofo molesto y me pregunto ¡Y para que tanta bulla el que cada milisegundos quiero que se ponga a titilar! ¡Le estoy haciendo gastar ciclos de procesador a la máquina al semerendo p***! ¡Podría destinar esos ciclos para algo más útil!
Lo bueno de mi labels/links es que se podía reaprovechar los eventos. De este modo sólo programaba en uno y los demás "apuntaban" a éste. Y lo extra es que sólo se notaba lo copado cuando el usuario pasaba por allí y no gasta nada de recursos .
Saludos,
#8
Escrito 09 febrero 2010 - 01:24
ademas de otros usos que podria darle a ese efecto.
#9
Escrito 09 febrero 2010 - 01:59
unit BlinkLabel; interface uses Classes, StdCtrls, ExtCtrls; { TTimer se declara en ExtCtrls } type TBlinkLabel = class(TLabel) {TBlinkLabel deriva de TLabel} private FVelocidad : integer; {Frecuencia de parpadeo} FTimer : TTimer; {Timer para la frecuencia} procedure SetVelocidad(valor : integer); {Almacena la velocidad} protected procedure parpadea(Sender : TObject); public constructor Create(AOwner : TComponent); override; {Constructor} destructor Destroy; override; {Destructor} published property Velocidad : integer read FVelocidad write SetVelocidad default 400; end; procedure Register; implementation constructor TBlinkLabel.Create(AOwner : TComponent); begin inherited Create(AOwner); {Llama al constructor original (heredado)} FTimer := TTimer.Create(Self); {Creamos el timer} FVelocidad := 400; {Frecuencia (velocidad) por defecto} FTimer.Enabled:=True; {Activamos el timer} FTimer.OnTimer:=parpadea; {Asiganamos el método parpadea} FTimer.Interval:=FVelocidad; {Asignamos el intervalo del timer = frecuencia parpadeo} end; destructor TBlinkLabel.Destroy; begin FTimer.Free; {Liberamos el timer} inherited destroy; {Llamamos al destructor original (heredado)} end; procedure TBlinkLabel.SetVelocidad (valor : integer); begin If FVelocidad <> valor then {Sólo si el valor introducido es distinto del almacenado} begin if valor < 0 then FVelocidad:=0; FVelocidad:=Valor; {Asigna la velocidad} if FVelocidad=0 then FTimer.Enabled:=False else FTimer.Enabled:=True; {Si Fvelocidad=0 el mensaje debe estar siempre visible} FTimer.Interval:=FVelocidad; Visible:=True; end; end; procedure TBlinkLabel.parpadea(Sender : TObject); begin if FTimer.Enabled then Visible := not(Visible); {Alternativamente muestra y oculta el mensaje si el timer esta activado} end; procedure Register; {Registro del componente} begin RegisterComponents('JCPH', [TBlinkLabel]); end; end.
#10
Escrito 09 febrero 2010 - 02:12
Gracias escafandra por tu respuesta, habia encontrado algo similar a lo que propones, pero haciendo esto con un timer:
delphi
DBText9.Visible:=not DBText9.Visible;
Hay alguna diferencia entre hacerlo asi y como indicas, cual crees que sea mas efectivo...
Si lo que quieres es una intermitencia simple, es lo mismo que lo hagas con la propiedad visible o el color del texto. El problema lo tendrás cuando lo quieres aplicar a un componente en el que no puedas hacer invisible el texto, entonces el truco será cambiarle el color. También puedes realizar efectos con los colores del texto...
Mi ejemplo ha tratado de ser general, sirviendo para cualquier control con texto.
En los tiempos que corren se gastan demasiados ciclos de procesador en adornos gráficos, los nuevos S.O. son una clara muestra de ello. Los programas actuales inevitablemente siguen esas tendencias, y las aplicaciones entran por los ojos.
Saludos.
#11
Escrito 09 febrero 2010 - 02:16
Salud OS
#12
Escrito 09 febrero 2010 - 05:05
Para que los usuarios vean y respondan a lo que uno necesita yo prefiero el látigo, pero ya se están quejando.
He intentado el texto con parpadeo, el sonido, el mensaje y me parece que el látigo funciona mejor.
Saludos
#13
Escrito 09 febrero 2010 - 05:14
Hola
Para que los usuarios vean y respondan a lo que uno necesita yo prefiero el látigo, pero ya se están quejando.
He intentado el texto con parpadeo, el sonido, el mensaje y me parece que el látigo funciona mejor.
Saludos
Ah caray, si que saliste malo amigo
Salud OS
#14
Escrito 09 febrero 2010 - 05:15
....He intentado el texto con parpadeo, el sonido, el mensaje y me parece que el látigo funciona mejor. ....
Indudablemente y en algunas situaciones, algunos usuarios lo que realmente necesitan es el látigo, sobre eso no cabe la menor duda.
Saludos.
#15
Escrito 09 febrero 2010 - 05:28
#16
Escrito 11 febrero 2010 - 04:05