Avatar billede gamer61 Nybegynder
02. marts 2003 - 01:43 Der er 32 kommentarer og
1 løsning

Countdown.... Hvordan

Hej Jeg vil gerne lave et program magen til det her.
http://home20.inet.tele.dk/pcfreak/ex.rar

Jeg ved hvordan jeg får computeren til at lukke ned. Jeg kan bare ikke finde ud af at lave en countdown som brugeren selv kan stille. Mit program skal bare bestå af; en form, en tæller som den i eksemplet, og en anortning hvor brugeren selv kan stille tiden.

På forhånd tak!
Avatar billede r9 Nybegynder
02. marts 2003 - 02:12 #1
Smid en TTimer på din form. (findes under System)
Smid en label (laMinLeft) sæt dens caption til 10
Lav en privat boolean (start)

I Timer's 'OnTimer' skriver du:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);
end;
Avatar billede r9 Nybegynder
02. marts 2003 - 02:13 #2
lav en knap som sørger for at timeren kan køre

procedure TForm1.Button2Click(Sender: TObject);
begin
start := true;
end;
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:14 #3
Der er kun en ting i det du lige skrev jeg ikke forstod;
Lav en privet boolean (start)?
Avatar billede r9 Nybegynder
02. marts 2003 - 02:16 #4
sådan:

var
  start : Boolean;


det er fordi at timeren kører hele tiden, og du skal således have en måde at start/stoppe den på
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:18 #5
oh ok. Jeg skal lige høre hvordan du vil lave den editbox brugeren kan indtaste minutterne i hvorefter man så trykker på knappen som så starter lablens countdown i den angivne tid
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:18 #6
Og skulle den der boolean stå i lablen eller i timeren
Avatar billede r9 Nybegynder
02. marts 2003 - 02:22 #7
smid en edtBox på formen.

skriv sådan her i knap metoden:
procedure TForm1.Button2Click(Sender: TObject);
begin
laMinLeft.Caption := Edit1.Text;
start := true;
end;


og sådan her i timer'en:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);
end;
Avatar billede r9 Nybegynder
02. marts 2003 - 02:23 #8
mine typer:
Timer1: TTimer;
laMinLeft: TLabel;
Button2: TButton;
Edit1: TEdit;

var
  Form1: TForm1;
  start : Boolean;
Avatar billede r9 Nybegynder
02. marts 2003 - 02:26 #9
unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    laMinLeft: TLabel;
    Button2: TButton;
    Edit1: TEdit;
 
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  start : Boolean;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
laMinLeft.Caption := Edit1.Text;
start := true;
end;

end.
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:29 #10
Kan man få timeren til at stoppe ved 0
Og kan man få fx et billede (image1) til at blive visible når den når 0
Avatar billede r9 Nybegynder
02. marts 2003 - 02:31 #11
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

  if laMinLeft.Caption = IntToStr(0)then
  start := false;
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:33 #12
Ja undskyld men jeg er rimelig ny i delphi så jeg kan ikke lige regne ud hvor de forskellige ting skal skrives
Avatar billede r9 Nybegynder
02. marts 2003 - 02:35 #13
laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

  if laMinLeft.Caption = IntToStr(0)then
  begin
  start := false;
  image1.Visible := true;
Avatar billede r9 Nybegynder
02. marts 2003 - 02:35 #14
image findes under additional
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:41 #15
Hvor skal dette stå henne

laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

  if laMinLeft.Caption = IntToStr(0)then
  begin
  start := false;
  image1.Visible := true;
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:56 #16
ohh nu fandt jeg ud af det
Avatar billede r9 Nybegynder
02. marts 2003 - 02:56 #17
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

  if laMinLeft.Caption = IntToStr(0)then
  begin
  start := false;
  image1.Visible := true;

  end;
end;
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:58 #18
Det virker ikke. Billedet kommer frem 2 sek efter formen er loadet
Avatar billede r9 Nybegynder
02. marts 2003 - 02:59 #19
I object inspectoren skal du sætte dit Image's visible property til false
Avatar billede gamer61 Nybegynder
02. marts 2003 - 02:59 #20
Det har jeg
Avatar billede r9 Nybegynder
02. marts 2003 - 03:03 #21
underligt.
Dette virker hos mig:

unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,POP3SMTP, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
   
    Timer1: TTimer;
    laMinLeft: TLabel;
    Button2: TButton;
    Edit1: TEdit;
    Image1: TImage;
   
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 
  start : Boolean;

implementation

{$R *.dfm}



procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

  if laMinLeft.Caption = IntToStr(0)then
  begin
  start := false;
  image1.Visible := true;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
laMinLeft.Caption := Edit1.Text;
image1.Visible := false;
start := true;
end;

end.
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:04 #22
Jeg poster lige mit for lettere at sammenligne:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, jpeg;

type
  TForm1 = class(TForm)
    Button1: TButton;
    laMinLeft: TLabel;
    Edit1: TEdit;
    Timer1: TTimer;
    Image1: TImage;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  start : Boolean;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if start then
  laMinLeft.caption:=IntToStr(StrToInt(laMinLeft.caption)-1);

if laMinLeft.Caption = IntToStr(0)then
  start := false;
  Image1.Visible := true;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
laMinLeft.Caption := Edit1.Text;
start := true;
end;


end.
Avatar billede r9 Nybegynder
02. marts 2003 - 03:06 #23
image1.Visible := true; bliver ALTID udført ved dig.

Du mangler en "begin"
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:06 #24
Nåå... Nu virker det hvis jeg copy/paster dine procedures
Avatar billede r9 Nybegynder
02. marts 2003 - 03:07 #25
og en "end"
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:08 #26
Kan man lave en mere detaljeret timer med timer og minutter.
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:11 #27
Nu virker det med en timer der tæller ned i sekunder. Kan man lave en timer der tæller ned i timer, minutter og sekunder. I så fald skal man så bruge 3 editboxe til hver enhed
Avatar billede r9 Nybegynder
02. marts 2003 - 03:11 #28
jeg prøver lige
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:11 #29
ok
Avatar billede gamer61 Nybegynder
02. marts 2003 - 03:35 #30
nå jeg smutter for i aften.
Avatar billede gamer61 Nybegynder
02. marts 2003 - 23:06 #31
Sig til hvis der sidder en eller anden der ved hvordan man laver en timer med sekunder, minutter og timer ;)
Avatar billede hreiff Nybegynder
03. marts 2003 - 08:27 #32
const
  t=0;    {timer}
  m=0;    {minutter}
  s=3;    {sekunder}
  {kan naturligvis også hentes fra 3 editboxe eller spinnere}

var
  tim,min,sek: integer;

Function Form(x,y,z: integer):string;
var
  a,b: string;
begin
  If y < 10 then a := '0'+inttostr(y)
  else a := inttostr(y);
  If z < 10 then b := '0'+inttostr(z)
  else b := inttostr(z);
  result := inttostr(x)+':'+a+':'+b;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  dec(sek);
  if sek = -1 then
  begin
    sek := 59;
    dec(min);
  end;
  if min = -1 then
  begin
    min := 59;
    dec(tim);
  end;
  label1.caption := form(tim,min,sek);
  if ((tim=0) and (min=0) and (sek=0)) then
  begin
    timer1.enabled := false;
    showmessage('Tiden er gået');
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  tim := t;
  min := m;
  sek := s;
  label1.caption := form(tim,min,sek);
end;

end.
Avatar billede hreiff Nybegynder
03. marts 2003 - 09:16 #33
PS. formateringen kan også laves således:

  label1.caption := format('%2d:%2.2d:%2.2d',[tim,min,sek]);
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