Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Uhrzeit (https://www.delphipraxis.net/69315-uhrzeit.html)

mentos112 13. Mai 2006 11:21


Uhrzeit
 
Moin

Ich habe hier ein formular wo ich ein edit fenster habe in dem ich eine Uhrzeit eingeben will (z.b.: 12:42) diese uhrzeit will ich dann in ein memo übergeben!
Jetzt meine Fragen wie kann ich die eingabe gestalten und wie die ausgabe?

Mit freundlichen Grüßen

mentos112

Thorben77 13. Mai 2006 11:36

Re: Uhrzeit
 
Mach's dir einfacher und nimm einen DateTimePicker. Bei dem stellst du die Kind-Eigenschaft auf dtkTime.
Die Zeit in ein Memofeld übertragen kannst du so:
Delphi-Quellcode:
MyMemo.Text := 'Eingegebene Uhrzeit:' + #32 + TimeToStr(MyDateTimePicker.Time);
MfG

Nachtrag: @ Flare: Keine Ahnung, hab's mir angewöhnt, Leerzeichen so zu anzugeben.

Flare 13. Mai 2006 11:41

Re: Uhrzeit
 
[ot]
Warum nimmst du #32 extra?
ich hätte das Ganze so gemacht:
Delphi-Quellcode:
MyMemo.Text := 'Eingegebene Uhrzeit: ' + TimeToStr(MyDateTimePicker.Time);
[/ot]


Flare

mentos112 13. Mai 2006 11:57

Re: Uhrzeit
 
Also so geht das nicht!

ich will ja die uhrzeit beliebig eingeben wenn jetzt 13 uhr ist will ichaber die uhrzeit von z.b. 09:36 eingeben!

Flare 13. Mai 2006 12:00

Re: Uhrzeit
 
So?
Delphi-Quellcode:
MyMemo.Text := 'Eingegebene Uhrzeit: ' + MyEdit.Text;
Oder soll in der Memo danach noch mehr eingeschrieben werdne oder steht schon mehr drin?


Flare

Thorben77 13. Mai 2006 12:05

Re: Uhrzeit
 
Das kannst du doch auch :roll: . Hast du dir schon die beiden netten kleinen Pfeilknöpfe rechts am/im DateTimePicker angeguckt? Außerdem kannst du auch mal mit der Maus reinklicken und dann mit der Tastatur die Zeit ändern.

himitsu 13. Mai 2006 17:00

Re: Uhrzeit
 
Oder einfach ein TEdit, da kannst du ja eine Eingabemaske angeben ... also sowas wie "09:99" (ich hoffe mal ":" ist kein Steuerzeichen), dann kannst du aber alles eingeben, also auch 52:69 ... damit ist wohl der Picker besser :roll:

Muetze1 13. Mai 2006 17:05

Re: Uhrzeit
 
Zitat:

Zitat von himitsu
Oder einfach ein TEdit, da kannst du ja eine Eingabemaske angeben ... also sowas wie "09:99" (ich hoffe mal ":" ist kein Steuerzeichen), dann kannst du aber alles eingeben, also auch 52:69 ... damit ist wohl der Picker besser :roll:

Korrektur: TMaskEdit

DP-Maintenance 13. Mai 2006 19:00

DP-Maintenance
 
Dieses Thema wurde von "r_kerber" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Das hat wohl eher etwas mit VCL bzw. Controls zu tun. Ich verschiebe einfach mal.

mentos112 14. Mai 2006 10:07

Re: Uhrzeit
 
Memo1.Text:=TimeToStr(DateTimePicker2.Time);

wenn ich das so habe dann bekomme ich immer nur die zeit heraus die im object inspector unter time steht aber nicht die die ich haben will und zwar direkt aus dem DateTimePicker2! außerdem noch die frage wie kann ich die uhrzeit mittels up/down in 5min schritte ändern?!

mit freundlichen grüßen
mentos112

GuenterS 14. Mai 2006 10:48

Re: Uhrzeit
 
Zitat:

Zitat von mentos112
Memo1.Text:=TimeToStr(DateTimePicker2.Time);

wenn ich das so habe dann bekomme ich immer nur die zeit heraus die im object inspector unter time steht aber nicht die die ich haben will und zwar direkt aus dem DateTimePicker2! außerdem noch die frage wie kann ich die uhrzeit mittels up/down in 5min schritte ändern?!

mit freundlichen grüßen
mentos112

Kannst Du mal den Quellcode posten?

Hast Du schon versucht, wenn das Programm läuft eine andere Zeit einzugeben?

mentos112 14. Mai 2006 11:53

Re: Uhrzeit
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Text:=TimeToStr(DateTimePicker2.);
Memo1.Lines.Add(ComboBox1.Text);
end;
ja habe ich schon versucht

mentos112 14. Mai 2006 12:07

Re: Uhrzeit
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Text:=TimeToStr(DateTimePicker2.Time);
end;
jungs das ist die lösung habe sie durch zufall herausbekommen!
aber es steht immer noch die frage im raum wie mit up/down die zeit in 5 min schritten ändern kann bzw. wie kann ich es gestalten das der ":" stehen bleibt wenn ich die uhrzeit eingebe ohne up/down!

mit freundlichen Grüßen
mentos112

mentos112 14. Mai 2006 12:09

Re: Uhrzeit
 
sorry verschrieben

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Text:=TimeToStr(DateTimePicker2.datetime);
end;
so muss es lauten!

juergen 14. Mai 2006 13:26

Re: Uhrzeit
 
Ich würde mir genau überlegen, welche Eingabe denn der Anwendner wünscht.
IMHO ist dieses Scrollen der Werte uneffektiv, dauert einfach zu lange.
Und nicht jeder Anwender weiß, wie er vom Std-Wert zum Minuten-Wert kommt,
benutzt dann aus "Verzweiflung" die Maus. :zwinker:
Wenn du also genau weißt wie die Eingabe zu erfolgen hat, weißt du im Prinzip auch was du nehmen musst.
Ich persönlich habe mir angewöhnt Editfelder zu verwenden.
Hier hat man sehr gute Möglichkeiten alles selbst zu steuern.
Hier mal ein Beispiel:


Delphi-Quellcode:
procedure TmyForm_Time_Edit_1Press(Sender: TObject;
  var Key: Char);
var
  string1: string;
  lsText: string; // bestehender Eingabetext
  liTSPos: Integer; // Position von TimeSeparator
begin
  string1 := Time_Edit_1.text;
  if key in [',', '.', ':'] then
    key := #58;

  //allgemeine Sperrung von allen Zeichen ausser
  //backspace, Enter, (-) , (,) , (.) , (:) und alle Zahlen
  if not (key in [#8, #13, #44, #48..#58]) then
    key := #0;

  //prüfen, ob die Eingabe nach dem Timeseparator > 5 ist
  if (Length(string1) > 0) and
    (string1[Time_Edit_3.Selstart] = ':') and
    (not (key in [#8, #13, #48..#53])) then
  begin
    key := #0;
    Windows.Beep(2000, 250);
  end;

  // nur ein TimeSeparator
  if (pos(#58, string1) > 0) and (key = #58) then
    key := #0;

  // kein TimeSeparator am Anfang
  if (Time_Edit_1.SelStart = 0) and (key = #58) then
    key := #0;

  //es sollen nur 2 Stellen hinter dem TimeSeparator eingegeben werden können { Ersetzen immer erlaubt }
  if (Time_Edit_1.SelLength = 0) then
  begin
    lsText := Time_Edit_1.Text;
    liTSPos := Pos(#58, lsText);
    if (liTSPos > 0) and (Time_Edit_1.SelStart > liTSPos) and (Length(lsText) -
      liTSPos >= 2) then
    begin
      if not (key in [#8]) then
        key := #0;
      Windows.Beep(2000, 250);
    end; // (Time_Edit_1.SelLength = 0)
  end;
end;
Anhand dieses Beispiels könntest du sicherlich deine notwendigen Änderungen vornehmen...
(Minuszeichen erlaubt, max 24 Std oder auch mehr?, usw.)
Eine Überlegung wäre noch, ob du den Timeseparator vom BS nimmst, oder so wie ich es
hier fest vorgegeben habe (#58=Doppelpunkt).

mentos112 15. Mai 2006 16:06

Re: Uhrzeit
 
sorry aber in diesem quelltext sehe ich irgentwie net durch was hast du denn auf der form für edit bzw. buttons? oder besitz diese gar nix davon!

mit freundlichen Grüßen
menos112

juergen 15. Mai 2006 20:15

Re: Uhrzeit
 
auf der Form gibt es dieses eine Editfeld... (Time_Edit_1)
Dieses eine Editfeld ist nun so ausprogrammiert, dass generell nur ganz bestimmte Eingaben möglich sind.
Bedeutet: du kannst z.B. versuchen einen Buchstaben einzutippen und es "piepst" nur...
"Gesteuert" wird das ganze über das Event -> OnKeyPress.
Die 3 Variablen werden benötigt, um den eingegebenen String "aufzubröseln"...

Also einfach mal ein Editfeld nehmen, meinetwegen umbenennen in "Time_Edit_1"
und dann im OI unter "Ereignisse" bei "OnKeyPress" ein Doppelklick machen und zw. begin...und...end den Code einfügen...
Testen und nachdenken, was du anders haben möchtest.
Besser: wie will es er Anwender... :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz