![]() |
im OnExit Event den String hinter dem Komma auffüllen auf 2
Hallo zusammen,
ich möchte über das OnExit Event von einem Edit-Feld den eingegebenen Wert durch den Anwender ggf. "richtig stellen". Ich suche eine Möglichkeit zu prüfen, ob hinter meinem TimeSeparator (kommt aus dem OnKeyPress-Event) ggf. auf 2 Stellen aufgefüllt werden muss. Also aus 123:1 wird 123:10. Zusätzlich muss auch der evtl. vergessene Timeseparator aufgefüllt werden... Aus 123 wird dann 123:00. Als "Auffüller" muss es immer eine Null oder halt 2 Nullen sein. (linksbündig auffüllen) Somit müssen es nach dem OnExitEvent immer 2 Stellen hinter dem TimeSeparator sein... Nun hab ich schon einiges probiert, aber noch nicht den richtigen Weg gefunden... Kennt hier jemand eine Lösung? Danke schon mal vorab! |
Re: im OnExit Event den String hinter dem Komma auffüllen au
Hallo Jürgen.
Die Lösung deines Problems ist nicht sonderlich schwer, wenn du verrätst, was 123:1 darstellen soll. Minuten führen ab 60, Stunden ab 24 zum Übertrag. Und von deiner Aufgabenstellung her würde ich 123:01 erwarten und nicht 123:10. Grüße vom marabu |
Re: im OnExit Event den String hinter dem Komma auffüllen au
Hallo Marabu,
ich benötige es tatsächlich so wie ich es beschrieben habe. In meinem Fall soll der Anwender Stundenwerte/Minutenwerte addieren oder subtrahieren können, durchaus auch Werte größer 24 Stunden... Gruß Jürgen |
Re: im OnExit Event den String hinter dem Komma auffüllen au
Hallo Jürgen,
hier ein wenig Code für dich - mach was draus:
Delphi-Quellcode:
Gute Nacht
function ParseStr(var s: string; delimiters: string; purge: boolean = true): string;
var i: integer; begin i := 0; while (i < Length(s)) and (Pos(s[Succ(i)], delimiters) = 0) do Inc(i); Result := Copy(s, 1, i); Delete(s, 1, i + Ord(purge)); end; function StrToMinutes(s: String): Cardinal; begin Result := StrToInt(ParseStr(s, TimeSeparator)) * 60; if s <> '' then Result := Result + StrToInt(ParseStr(s, TimeSeparator)); end; function MinutesToStr(minutes: Cardinal): String; begin Result := Format('%d:%.2d', [minutes div 60, minutes mod 60]); end; procedure TDemoForm.EditExit(Sender: TObject); begin with Sender as TEdit do Text := MinutesToStr(StrToMinutes(Text)); end; marabu |
Re: im OnExit Event den String hinter dem Komma auffüllen au
Hallo marabu,
Respekt! :thumb: Funktioniert perfekt. - das hätte ich so nie hinbekommen... :( Wieder eine sehr qualifizierte Antwort von dir! Dafür könnte ich :kiss: , naja keine Angst, nur im übertragenem Sinne... Mit deiner Lösung wird nun aus 123:1 dann 123:01, aber inzwischen denke ich, dass es so eigentlich besser ist. Vielen Dank und Gute Nacht! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz