Autor Beitrag
schitho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: So 15.06.03 21:15 
Hi,

hab einen kleinen PC-Wecker erstellt. Wäre für Feedback dankbar.

Download hier.

_________________
(Sorry! Leider ewiger Delphi-Neuling)


Zuletzt bearbeitet von schitho am Di 17.06.03 22:41, insgesamt 1-mal bearbeitet
Mo
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 16.06.03 13:07 
hallo thomas,
funzt gut dein programm. ist bestimmt nicht nur zum pizza-schutz zu gebrauchen :wink: .

gruß
mo
Mo
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 16.06.03 16:52 
hi thomas,
habe doch noch einen hinweis: nach dem betätigen einer taste in einem selektierten eingabefeld (inhalt markiert), muss normalereweise der inhalt komplett durch die neue eingabe ersetzt werden. das ist in deinen "zeit-edits" aber nicht so (etwas gewöhnungsbedürftig).

gruß
mo
schitho Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: Mo 16.06.03 23:53 
Hi Mo,

Hab versucht spin-edit etwas bessere Manieren beizubringen.

Das Problem ist jedoch folgendes:

Erhöht man den eingetragenen Wert durch Klicken auf den kleinen Pfeil bzw. durch die Nach-oben-Taste auf der Tastatur wäre standardgemäß bei 59 Schluß. Nun wollte ich jedoch, dass sobald 59 erreicht wird, der Zähler bei 0 wieder beginnt. Das Ganze soll natürlich auch in die andere Richtung funktionieren.

Daher hab ich folgenden Code beim OnChange Ereignis verwendet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TFormGoAway.SpinMinutenChange(Sender: TObject);
begin
 if SpinMinuten.Value= 60 then SpinMinuten.Value:=0;
 if SpinMinuten.Value= -1 then SpinMinuten.Value:=59;
end;


Wenn man nun den eingetragenen Wert markiert und versucht diesen zu überschreiben passiert leider (scheinbar) folgendes:

1.) Der Inhalt wird gelöscht
2.) Die Tastatureingabe wird durchgeführt

ad 1.)
Das Löschen bewirkt intern scheinbar den Wert -1. Dadurch erzeuge ich - siehe oben - den Wert 59

ad 2.)
Nun wird die Tastatureingabe (z.B. eine 3, wenn die Taste 3 gedrückt wurde) vor dem Wert 59 angezeigt. Somit also den schwachsinnigen Wert von 359

Versuche nun das Problem mit folgendem Code zu umgehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TFormGoAway.SpinMinutenChange(Sender: TObject);
begin
 if SpinMinuten.Value= 60 then SpinMinuten.Value:=0;
 if SpinMinuten.Value> 60 then SpinMinuten.Value:=min;
 if (SpinMinuten.Value= -1and (min =0then SpinMinuten.Value:=59;
 if SpinMinuten.Value< -1 then SpinMinuten.Value:=0;
 min:=SpinMinuten.Value;
end;


Mit der Variable min, die ich global als integer definiert habe, merke ich mir immer den letzten Wert.

Mit diesem Code funktioniert es schon recht gut. Es gibt nur 3 Probleme:

1.) Wird 0 gelöscht, erzeugt die Procedure 59
2.) Wird ein anderer Wert markiert und gelöscht (mit der Taste entfernen), dann würde das SpinEdit-Feld leer bleiben, wenn keine weitere Eingabe erfolgt.
3.) Der Cursor wandert an die erste Stelle, sobald ein zu großer Wert eingegeben wird.

Den 2. Punkt fang ich nun ab, in dem ich auf OnExit reagiere und beim Wert -1 diesen auf 0 ändere.

Für mein erstes Problem hab ich jedoch keine Lösung. :cry:

Das 3. Problem ist mir eher wurscht :wink:

Für Lösungsvorschläge wär ich daher dankbar :)

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

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



BeitragVerfasst: Di 17.06.03 09:04 
moin thomas,
ich würde in editchange lediglich die unteren und oberen grenzen kontrolieren und ggf. festhalten. alles andere kann im weckerstellen-event ablaufen. evt. mit meldung über ungültige eingaben.

gruß
mo