Entwickler-Ecke

Sonstiges (Delphi) - Procedur für Wecker


rulingorc - Mo 04.06.07 18:42
Titel: Procedur für Wecker
Hallo zusammen.
Brauch auf Kürze eine Procedur für einen Wecker. Er soll möglichst einfach sein, also mit nicht so viel schnickschnack, damit ich ihn als noob verstehe^^. Wer gerade mal eine Procedur fertig hat könnte die ja hier rein posten. THX!


Moderiert von user profile iconraziel: Topic aus Programmierwerkzeuge verschoben am Mo 04.06.2007 um 19:00
Moderiert von user profile iconChristian S.: Topic aus Sonstiges (C# / .NET) verschoben am Mo 04.06.2007 um 19:01


Christian S. - Mo 04.06.07 19:04

Was stellst Du Dir denn darunter vor? :gruebel:


Delphi-Quelltext
1:
2:
3:
4:
procedure MachWecker;
begin
...
end;

Und was soll die dann machen?

Wieso probierst Du es nicht selber mal und wir helfen Dir dann? Dabei gilt natürlich: Für konkrete Probleme jeweils ein Thread ;-)


rulingorc - Mo 04.06.07 19:13

ich würds gerne machen echt, aber muss morgen schon etwas für mathe info abgeben und hab so lange mit der analogen uhr gebraucht. deswegen such ich jetzt einen wecker, der einfach zu verstehen ist, einen fertigen wecker. ich mach in den ferien selber einen aber bin immo zu beschäftigt deswegen diese not-lösung...


Robinator - Mo 04.06.07 20:35

Hi,

mal als Ansatz:


du brauchst :

-eine Form
-einen Timer
-einen TDateTimePicker

im OnTimer event der timer komponente könntest du nun wie Folgt vorgehen


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  
if now > DateTimePicker1.DateTime then //bin mir nicht sicher ob die entsprechende property .DateTime heisst, musste ma nachgucken
 begin
    TTimer(Sender).Enabled := False;
    beep;
    beep;
    beep;
    Showmessage('AUFSTEHEN!!');
 end;
end;


damit ist ein einfacher Wecker ansich schon fertig :)

gruss, Rob

ps.: Du solltest den Timer per default erstmal auf enabled = False stellen, sonst macht er vermtl am anfang permanent lärm. Enablen könntest du ihn dann per Button o.ä. ;)


rulingorc - Mo 04.06.07 21:45

jo dankeschön echt nett


rulingorc - Mo 04.06.07 22:03

nur kann man jetzt noch keine zeit einstellen wann man geweckt werden möchte und das mit dem default enabled:=false hab ich auch noch net ganz verstanden.


rulingorc - Mo 04.06.07 22:47

soweit bin ich

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    DateTimePicker1: TDateTimePicker;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if now > DateTimePicker1.DateTime then //bin mir nicht sicher ob die entsprechende property .DateTime heisst, musste ma nachgucken
 begin
    TTimer(Sender).Enabled := False;
    beep;
    beep;
    beep;
    Showmessage('AUFSTEHEN!!');
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=False;
end;

end.

kann mir jmd das bittebitte zu ende machen ich verzweifel gleich.


Narses - Mo 04.06.07 22:58

Moin!

user profile iconrulingorc hat folgendes geschrieben:
nur kann man jetzt noch keine zeit einstellen wann man geweckt werden möchte und das mit dem default enabled:=false hab ich auch noch net ganz verstanden.

Robinator meinte sicher damit, dass du im Objekt-Inspektor die Eigenschaft Enabled auf FALSE setzen solltest, weil der Timer sonst schon direkt bei Programmstart losläuft. :idea:

user profile iconrulingorc hat folgendes geschrieben:
kann mir jmd das bittebitte zu ende machen ich verzweifel gleich.

Mach dich schon mal mit dem Verzweifeln vertraut, wir machen hier keine Hausaufgaben... :roll: :mahn: ;)

cu
Narses


Christian S. - Mo 04.06.07 23:01

Also:

(1) Die Zeit wird bereits in dem DateTimePicker eingestellt. Du musst im Objektinspektor mal schauen, wo Du einstellen kannst, dass man beim DateTimePicker eine Zeit einstellen kann.

(2) Wenn Timer.Enabled anfangs auf False steht (damit der Wecker nicht anfängt zu arbeiten, bevor Du überhaupt was eingestellt hast), worauf musst Du ihn dann im Button stellen?

Christian


rulingorc - Mo 04.06.07 23:04

true?


Christian S. - Mo 04.06.07 23:06

korrrrrrrekt!

Und die Eigenschaft für den DateTimePicker heißt wie? (Sonst kannste nur ein Datum einstellen und das ist für die meisten Leute beim Wecker zu ungenau)


rulingorc - Mo 04.06.07 23:07

hab die time im date... gefunden und auf true gestelllt. timer ist erst auf enabled:=false


Christian S. - Mo 04.06.07 23:08

user profile iconrulingorc hat folgendes geschrieben:
hab die time im date... gefunden und auf true gestelllt.
Was meinst Du?

user profile iconrulingorc hat folgendes geschrieben:
timer ist erst auf enabled:=false
Timer.Enabled erst auf false, im Button auf True. Richtig.


Narses - Mo 04.06.07 23:08

:rofl: wenn ich mir dazu noch die Stimme von John Cleese vorstelle... :lol:


rulingorc - Mo 04.06.07 23:13

im objektinspektor vom datetimepicker hab ich "time" gefunden nur wie kann ich die zeit ändern wenn ich mein programm starte?


Christian S. - Mo 04.06.07 23:14

Du musst die Art (was auf Englisch übrigens "Kind" heißt) des DateTimePickers so umstellen, dass nicht mehr ein Datum, sondern eine Zeit eingestellt wird.


rulingorc - Mo 04.06.07 23:17

ahso und jetzt muss ich es noch aktivieren können
mit ner combobox oder geht das auch mitm button?
ich kenn den befehl aber nicht wie man sowas aktiviert


Christian S. - Mo 04.06.07 23:18

Timer.Enabled auf True zu setzen, aktiviert das Ganze bereits. Der prüft dann jede Sekunde, ob die aktuelle Zeit (now) später als die Zeit im DateTimePicker (DateTimePicker1.DateTime) ist -> if now > DateTimepIcker1.DateTime

Wenn Du den Wecker benutzen willst, stellst Du also die Zeit im DateTimePicker ein und klickst dann den Button. Zur gewünschten Zeit sollte die Meldung kommen.


rulingorc - Mo 04.06.07 23:20

ja aber ich kann nicht auf das button klicken wenn ich das programm starte


Christian S. - Mo 04.06.07 23:22

user profile iconrulingorc hat folgendes geschrieben:
ja aber ich kann nicht auf das button klicken wenn ich das programm starte
Ich hab doch geschrieben, wie man den Wecker benutzt: Programm starten, Zeit einstellen, Button klicken, aufs Wecken warten


rulingorc - Mo 04.06.07 23:26

programm starten=> zeit einstellen=> aufs button klicken um das zu aktivieren aber das button feld kann ich nicht anklicken um das zu aktivieren und dann kann ich jahre warten. wenn ich etwas nicht kapier bitte nicht böse werden... trotzdem schonmal vielen dank dass du trotz der umstände mir geholfen hast.! echt nett


Christian S. - Mo 04.06.07 23:28

Wieso kannst Du das Button-Feld (ich nehme an, Du meinst damit den Button) nicht anklicken? Ist der grau (also nicht aktiv)? :gruebel:


rulingorc - Mo 04.06.07 23:29

vllt ist ja noch irgendwas falsch.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    DateTimePicker1: TDateTimePicker;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if now > DateTimePicker1.DateTime then //bin mir nicht sicher ob die entsprechende property .DateTime heisst, musste ma nachgucken
 begin
    TTimer(Sender).Enabled := False;
    beep;
    beep;
    beep;
    Showmessage('AUFSTEHEN!!');
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;

end.

?
genau er ist grau


rulingorc - Mo 04.06.07 23:31

yeah ich habs xD hatte den wecker aus versehen noch auf false gestellt gehabt jetzt klappts ey echt danke hast mir super geholfen :lol:


Christian S. - Mo 04.06.07 23:33

Dann viel Spaß im Info-Unterricht ;-)


rulingorc - Mo 04.06.07 23:36

jo danke nochmal werd mich in zukunft auch mehr für delphi interessieren und mehr selber versuchen. cu dann und gn8^^