Avatar billede jeppeand Nybegynder
24. februar 2005 - 18:52 Der er 4 kommentarer og
1 løsning

Showmessage besked kun en gang

Jeg har sat en timer til at checke om et tal er imellem to tal.
Og hvis det ene tal ikke er imellem de to tal, så skal der starte en lyd, og starte en showmessage.

Men hvordan gør jeg at showmessage kun kommer en gang, selv om at timeren kører videre?

Min kode:

procedure TForm1.Timer1Timer(Sender: TObject);
var tal1, tal2, tal3: real;
begin

tal1:= StrToFloat(edit1.Text);
tal2:= StrToFloat(edit2.Text);
tal3:= StrToFloat(edit3.Text);

if tal1>tal2 then mediaplayer1.Play else
if tal1<tal3 then mediaplayer1.Play;
if tal1>tal2 then showmessage ('For høj temperatur!!!')  else
if tal1<tal3 then showmessage ('For lav temperatur!!!');

end;
Avatar billede nca Juniormester
24. februar 2005 - 19:02 #1
Du har 2 muligheder
1) Afbryd timeren lige før du laver ShowMessage
2) Sæt et flag (en boolean) som fortæller dig om der har været vist en meddelelse.
Avatar billede jeppeand Nybegynder
24. februar 2005 - 19:09 #2
tak

du kunne vel ikke lave et eksempel?

/på forhånd tak
Avatar billede nca Juniormester
25. februar 2005 - 07:39 #3
Det vil jeg gerne.
Er det 1 eller 2 jeg skal lave et eksempel for?
Avatar billede jeppeand Nybegynder
25. februar 2005 - 17:59 #4
2'eren tak
Avatar billede nca Juniormester
28. februar 2005 - 19:56 #5
Her er en stup kode, hvor jeg bruger et flag "BeskedVist" til at styre om beskeden skal vises eller den allerede er vist.
Læg mærke til at jeg initiere BeskedVist i Formens OnCreate event.

var
  Form1: TForm1;
  BeskedVist: Boolean;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
  var tal1, tal2, tal3: real;
begin
  if not BeskedVist then begin
    tal1:= StrToFloat(edit1.Text);
    tal2:= StrToFloat(edit2.Text);
    tal3:= StrToFloat(edit3.Text);

    if tal1>tal2 then begin
      BeskedVist:=True;
      mediaplayer1.Play;
      showmessage ('For høj temperatur!!!');
    end;
    if tal1<tal3 then begin
      BeskedVist:=True;
      mediaplayer1.Play;
      showmessage ('For lav temperatur!!!');
    end;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  BeskedVist:=False;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester