Jump to content
Hercles

Fazer as duas imagem alternarem

Recommended Posts

Hercles

não consigo fazer as duas imagem 'flulogo.bmp' e 'rivellino.bmp' alternarem.

unit Unit1;
{$mode objfpc}{$H+}
interface
uses
 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
 ExtCtrls;
type
 { Tfrmrelogio }
 Tfrmrelogio = class(TForm)
btnligar: TButton;
btndesligar: TButton;
Image1: TImage;
tmranimacao: TTimer;
tmrrelogio: TTimer;
txtrelogio: TEdit;
txthoras: TEdit;
txtminutos: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
procedure btndesligarClick(Sender: TObject);
procedure btnligarClick(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure tmranimacaoTimer(Sender: TObject);
procedure tmrrelogioTimer(Sender: TObject);
procedure txthorasChange(Sender: TObject);
 private
txthorario: string;
{ private declarations }
 public
{ public declarations }
 end;
var
 frmrelogio: Tfrmrelogio;
implementation
{$R *.lfm}
{ Tfrmrelogio }
procedure Tfrmrelogio.txthorasChange(Sender: TObject);
begin
end;
procedure Tfrmrelogio.tmrrelogioTimer(Sender: TObject);
begin
 txtrelogio.text:=formatdatetime('hh:mm:ss', now);
 if (txtrelogio.text=txthorario) then
 begin
windowstate := wsmaximized;
caption := 'Despertador Ativado';
tmranimacao.enabled := true;
end;
 end;
procedure Tfrmrelogio.btnligarClick(Sender: TObject);
var dtmdespertar: Tdatetime;
begin
 txthorario:= txthoras.text +':'+txtminutos.text+':00';
 dtmdespertar:= strtotime(txthorario);
 caption:=formatdatetime('hh:mm:ss', dtmdespertar);
 btnligar.caption := 'Despertador Ligado' ;
 tmranimacao.tag := 0;
end;
procedure Tfrmrelogio.Image1Click(Sender: TObject);																							 A
begin
end;
procedure Tfrmrelogio.tmranimacaoTimer(Sender: TObject);
begin
  if (tmranimacao.tag = 0) then
  image1.picture.loadfromfile('flulogo.bmp');
  if(tmranimacao.tag = 1) then
  Image1.picture.loadfromfile('rivellino.bmp');
  tmranimacao.tag := (tmranimacao.tag +
  1) mod 2;
  beep;
  end;
procedure Tfrmrelogio.btndesligarClick(Sender: TObject);
begin
 txthorario:='';
 caption:='Relógio';
 tmranimacao.enabled:=false;
 btnligar.caption:= 'Liga Despertador';
 windowstate:=wsNormal;
 image1.visible:=false;
end;

end.

Edited by Hercles

Share this post


Link to post
Share on other sites
nunopicado

Experimenta, antes de carregares as imagens, libertar a actual e forçar o processamento de mensagens.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
nunopicado

a atual é o método TImage?

TImage é uma classe, e não um método.

Experimenta, antes de começares a carregar as imagens para o TImage, usar o seguinte:

image1.Picture.Bitmap.FreeImage;
Application.ProcessMessages;


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Hercles

coloquei dentro de => procedure Tfrmrelogio.tmranimacaoTimer(Sender: TObject); e continuou no mesmo

Share this post


Link to post
Share on other sites
Gilson Nunes

if (txtrelogio.text=txthorario) then

pq não usa o proprio dado?

por exemplo:

01:00:00 <> '1:00'

sobre o prob.

testei assim e funcionou normalmente.

qual o interval q vc usou no timer?

o meu ta com 1000

begin
 if (tmranimacao.tag = 0) then
   tmranimacao.picture.loadfromfile('D:\d\image.bmp')
 else
   tmranimacao.picture.loadfromfile('D:\d\teste.bmp');

 tmranimacao.Tag := (tmranimacao.tag +  1) mod 2;
 Beep;
end;

Edited by thoga31
Tags code + GeSHi

Share this post


Link to post
Share on other sites
Hercles

curiosidade... Digamos que eu ofereça um programa como este a uma pessoa gratuitamente até o dia 31/12/2013 e após esta data ele não vai funcionar mais e será informado por este programa que: Sua licença expirou, "entre em contato contato como xxxx pelo telefone xxxxxx".

Sei que seria algo do tipo - se data atual igual ou maior que 31/12/2013 então o programa vai pro fim e exibe mensagem de critica.

Share this post


Link to post
Share on other sites
thoga31

Nesse caso é simples: analisas qual é o ano e mais nada :D

Se o ano for maior do que 2013, apresenta uma mensagem de erro e não arranca.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Sei que seria algo do tipo - se data atual igual ou maior que 31/12/2013 então o programa vai pro fim e exibe mensagem de critica.

Não precisa "ir para o fim".

Podes antecipar esse fim.

Se a data for > xx/xx/xxxx, mostra a mensagem de depois "Application.Terminate;"


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Uma técnica utilizada muitas vezes em .NET é tornar a form principal invisível no arranque, e no evento referente à abertura da Form (não me lembro do nome) mandava-se abrir logo uma segunda Form que fazia a verificação. Ou então a verificação era feita no principal no arranque, e caso estivesse tudo bem, tornava-se visível.

Depende do gosto de cada um.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Uma técnica utilizada muitas vezes em .NET é tornar a form principal invisível no arranque, e no evento referente à abertura da Form (não me lembro do nome) mandava-se abrir logo uma segunda Form que fazia a verificação. Ou então a verificação era feita no principal no arranque, e caso estivesse tudo bem, tornava-se visível.

Depende do gosto de cada um.

Em Delphi/Lazarus, pelo menos, a form principal só é mostrada depois de executar o OnCreate.

Assim, se a verificação for feita aí, a form não chega a ser mostrada (ainda que apareça um flick no ecrã da dita a ser fechada).

Se for feito no programa principal, antes de chamar a form, aí tudo se passa de forma invisível, não chega a usar a memória para a form.

mas a variável é string.. quando eu transformar ela pra Tdate ela pode ser comparada >=?

Sim, os operadores relacionais funcionam tanto em String como em TDateTime.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Hercles

SHOW>>>>rsrsrsr vou criar um programinha pra a empresa que trabalho e vou sacaniar uma pessoal que acha que vai ficar com os méritos ... kkkk depois de uma certa data vou colocar uma mensagem "Prazo expirado é necessário que contactar o criador do Software, meu nome completo e telefone, para a manutenção" :)

Share this post


Link to post
Share on other sites
nunopicado

SHOW>>>>rsrsrsr vou criar um programinha pra a empresa que trabalho e vou sacaniar uma pessoal que acha que vai ficar com os méritos ... kkkk depois de uma certa data vou colocar uma mensagem "Prazo expirado é necessário que contactar o criador do Software, meu nome completo e telefone, para a manutenção" :)

Pronto, mais um que vai para o desemprego! lol


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

@nunopicado, é originalidade. Em vez de se despedir com carta de resignação, faz um software com data limite de uso. Até pode ser que saia na TV... ah não, espera, não é Portugal com televisão tipicamente tuga... :D


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

hehehe

Hercles: Não sei como é a lei brasileira, mas aqui, se fazes um software enquanto funcionário de uma empresa, os direitos do software são da empresa, e não teus.

Vê lá o que fazes para não arranjares problemas.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Hercles

mas pensa comigo... um dia vou ser demitido, já pensou se a empresa ficar atrás de mim pra resolver este problema kkkkkkk seria uma retorno a altura. mas não sou da área de TI desta empresa. kkkkk

Share this post


Link to post
Share on other sites
nunopicado

Há empresas que preferem mandar fazer tudo de novo do que pedir a um funcionário demitido para resolver o problema... especialmente se o problema for causado por ele.

É preferivel não abrires essa guerra.

Faz o programa, fa-lo de forma a que se torne tão imprescindivel que não possam viver sem ele.

Melhora-o, torna-o gigante, para que a sua substituição seja impensável.

E mantém-te sempre à frente do projecto.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.