Autor Beitrag
kongreddgrass
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: So 10.08.03 18:29 
Hi,

ich hab ein Problem. Wie täte der Code für einen Wecker lauten. Ich plaziere in den Form zwei Textfelder eine für Stunden und eine für Minuten. Und noch ein Button, der den Wecker dann laufen lässt. Ihr müsst dass ja nicht extra für mich proggen, aber ich will ja nur eine Hilfe für die Programmierung.

Mike

PS: Meine Pizze tät sonst rauchen (ungesund) :wink:

_________________
o.o
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: So 10.08.03 18:34 
Das Stickwort heißt TTimer.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender:TObject);
begin
 Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender:TObject);
begin
 if AnsiSameText(Edit1.Text+':'+Edit2.Text,copy(TimeToStr(now),1,5)) then ShowMessage('Wecker');
end;
Code nicht getestet. Damit der Code funzt, must du einen Timer erstellen und Enabled auf False setzen (sonst äuft auch schon vor dem Click des Buttons :wink: )

maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: So 10.08.03 19:07 
Hi,
bei mir funzt das kompilieren, aber wenn ich in irgendeinem Textfeld 1 reinschreibe, dann öffnet sich aber keine Show Message. :?:
Weiß nicht woran das liegt, der Code schaut schon normal aus. :shock:
Mike :mahn:

_________________
o.o
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 10.08.03 19:10 
Hmm, wie war das noch gleich als ich das gemacht habe...
irgendwie so:
ich habe ein maskedit mit dem text "__:__:__" (oder so?? auf jeden fall dass das format so ist wie das von timetostr (siehe onlinehilfe)) und das was da drin stand dann einfach mit timetostr verglichen.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 11.08.03 07:58 
kongreddgrass hat folgendes geschrieben:
Hi,
bei mir funzt das kompilieren, aber wenn ich in irgendeinem Textfeld 1 reinschreibe, dann öffnet sich aber keine Show Message. :?:
Weiß nicht woran das liegt, der Code schaut schon normal aus. :shock:
Mike :mahn:
Schreib mal 01, die Zahlen müssen zweistellig sein.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
The-FoX
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 203

Win XP
D6 Pers
BeitragVerfasst: Mo 18.08.03 04:13 
Is zwar umständlicher aber es müsste imho klappen.

In die globalen Variablen a: integer und b : integer eintragen. Dann:
ausblenden volle Höhe 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:
procedure TForm1.Timer1Timer (Sender:TObject)
var a :integer;
begin
timer1.interval := 1000//1 sec
if a < 60 then a := a + 1;
if a = 59 then a := 0;
edit1.text := inttostr(a);
end;

procedure TForm1.Timer2Timer (Sender:TObject)

begin
timer2.intervall := 60 000//60 sec = 1 Min;
if b > 60 then b := b + 1//oder halt -1
if b = 59 then b := 0;
edit2.text := inttostr(b);
end;

procedure TForm1.Timer3Timer (Sender:TObject)
begin
timer3.intervall := 1000//weniger ist nicht nötig
if spinedit1.value = b then
                                if spinedit2.value = a then showmessage ('Hans');
//spinedit1.value sind die Minuten, und spinedit2.value sind die Sec nachdem der Wecker wecken soll 
end;

procedure Tform1.button1click (Sender:TObject) // so alles aufrufen
begin
timer1.enabled := true;
timer2.enabled := true;
timer3.enabled := true;
a := 0;
b := 0;
button1.caption := ('Zeit zurücksetzen')
end;

hoffe mal ich hab geholfen.
schitho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: Di 19.08.03 18:07 
Ich würde auch SpinEdit statt dem Textfeld empfehlen (hab ich zumindest mei meinem Wecker so gemacht).

Du kann bei SpinEdit mit MaxValue und MinValue den Zahlenbereich festlegen.

Für die Stunden könnte das dann so aussehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
:
SpinStunden.MinValue:=0;
SpinStunden.MaxValue:=23;
:


Außerdem könntest als Service gleich beim Aufruf die aktuelle Zeit als Voreinstellung anzeigen lassen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure Form1.FormCreate(Sender: TObject);
var
  std, min, sec, msec: Word;

begin
  DecodeTime(time, std,min,sec,msec);
  SpinMinuten.Value:=min;
  SpinStunden.Value:=std;
end;

_________________
(Sorry! Leider ewiger Delphi-Neuling)
ex-wishmaster
Hält's aus hier
Beiträge: 1


D7
BeitragVerfasst: Sa 23.10.04 23:00 
Titel: Simpler Wecker mit Delphi
Hallo!
Da ich zufällig heute Abend einen kleinen Wecker geschrieben habe poste ich den Quelltext einfach mal hier. Ich hoffe er kann etwas helfen bei dem Problem.
Falls jemand Verbesserungsvorschläge hat bitte mitteilen! Bin noch Neuling in Delphi.

ausblenden volle Höhe 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:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMan, ExtCtrls, StdCtrls, Buttons, Spin, Menus;

type
  TForm3 = class(TForm)
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Edit2: TEdit;
    Edit3: TEdit;
    Timer1: TTimer;
    Timer2: TTimer;
    XPManifest1: TXPManifest;
    BitBtn1: TBitBtn;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    PopupMenu1: TPopupMenu;
    Programmbeenden1: TMenuItem;
    Weckerschlieen1: TMenuItem;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure SpinEdit2Exit(Sender: TObject);
    procedure SpinEdit1Exit(Sender: TObject);
    procedure Programmbeenden1Click(Sender: TObject);
    procedure Weckerschlieen1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Timer1Timer(Sender: TObject);
begin
// Timer steht auf Intervall 1
// Aktuelle Zeit in Edit1 schreiben - Format StundeStunde:MinuteMinute
edit1.Text:=FormatDateTime('hh:nn', now);

// Aktuelle Sekunden in Edit3 schreiben
// Nur damit es schöner aussieht, könnte man auch
// weglassen
edit3.Text:=FormatDateTime(':ss', now);
end;

procedure TForm3.Timer2Timer(Sender: TObject);
begin
// Timer steht auf Intervall 1000
// Prüfen ob Zeit in Edit2 mit Zeit in Edit1 übereinstimmt
// Wenn Zeit übereinstimmt dann Timer ausschalten
// ansonsten darf man die ShowMessage mehrmals wegklicken
if edit1.text=edit2.text then
begin
timer2.Enabled:=false;
beep;
showmessage('Sie wollten geweckt werden!!!');
end
end;

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
// Da die Uhrzeit zweistellig ist muss die Weckzeit auch zweistellig sein
// hier werden die Angaben des Benutzers passend gewandelt
// Dieser gibt mit Sicherheit im Spinedit z.B. 7 statt 07 ein
if spinedit1.text='0' then spinedit1.text:='00';
if spinedit1.Text='1' then spinedit1.Text:='01';
if spinedit1.text='2' then spinedit1.text:='02';
if spinedit1.text='3' then spinedit1.text:='03';
if spinedit1.text='4' then spinedit1.text:='04';
if spinedit1.text='5' then spinedit1.text:='05';
if spinedit1.text='6' then spinedit1.text:='06';
if spinedit1.text='7' then spinedit1.text:='07';
if spinedit1.text='8' then spinedit1.text:='08';
if spinedit1.text='9' then spinedit1.text:='09';
if spinedit2.text='0' then spinedit2.text:='00';
if spinedit2.Text='1' then spinedit2.Text:='01';
if spinedit2.text='2' then spinedit2.text:='02';
if spinedit2.text='3' then spinedit2.text:='03';
if spinedit2.text='4' then spinedit2.text:='04';
if spinedit2.text='5' then spinedit2.text:='05';
if spinedit2.text='6' then spinedit2.text:='06';
if spinedit2.text='7' then spinedit2.text:='07';
if spinedit2.text='8' then spinedit2.text:='08';
if spinedit2.text='9' then spinedit2.text:='09';
// Die Werte von den beiden Spinedit's in Edit2 schreiben
// Das wird als Weckzeit benutzt
edit2.Text:=(spinedit1.Text)+(':')+(spinedit2.Text);
end;

procedure TForm3.SpinEdit2Exit(Sender: TObject);
begin
// Prüfen ob das Spinedit nicht leer ist
// Wenn das nicht gemacht wird fliegt uns das Programm
// mit einem Fehler um die Ohren
if spinedit2.Text='' then
begin
ShowMessage('Feld darf nicht leer sein!');
Spinedit2.Text:='0';
end
end;

procedure TForm3.SpinEdit1Exit(Sender: TObject);
begin
// Prüfen ob das Spinedit nicht leer ist
// Wenn das nicht gemacht wird fliegt uns das Programm
// mit einem Fehler um die Ohren
if spinedit1.Text='' then
begin
ShowMessage('Feld darf nicht leer sein!');
spinedit1.Text:='0';
end
end;

procedure TForm3.Programmbeenden1Click(Sender: TObject);
begin
// Programm beenden
application.terminate;
end;

procedure TForm3.Weckerschlieen1Click(Sender: TObject);
begin
// Eine Form verstecken
form3.Hide;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
// hier kann man sachen eintragen die beim start der form passieren sollen
end;

end.


Auf der Form wurden folgenden Elemente platziert:
ausblenden Quelltext
1:
2:
3:
4:
1x BitButton
2x Spinedit
2x Timer
3x Edit

Andere Elemente dienen nur dem Aussehen des Weckers. Er ist erweiterbar, denkbar wäre z.b. Wecken mit Sound oder Deaktivieren/Aktivieren des Weckers. Gibt noch viele Möglichkeiten, aber für heute Abend reicht mir der vorliegende Wecker aus.

Falls irgendwelche Fragen auftauchen, einfach stellen. Ich werde versuchen sie zu beanworten mit meinem eingeschränkten Wissen. Falls ich irgendwas falsch gemacht habe oder wenn ich etwas hätte besser machen können dann bitte sagen :)

_________________
---
greetz Wishmaster