![]() |
D6: DateTimePicker OnKeyDown Datum nicht aktualisiert
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo #,
ich habe hier ein ärgerliches Problem. Das Ändern eines DateTimePickers per Tastatur erfolgt manchmal zu spät. Testen: - Monat auf 6 umstellen (nicht 06) per Tastatur - OK klicken mit Maus -> OnOK - Datum wird korrekt angezeigt - Monat auf 6 umstellen (nicht 06) per Tastatur - Enter drücken -> OnKeyDown des Forms -> OnOK - Datum steht immer noch auf dem Monat 07 Das Aktualisieren auf 06 erfolgt erst nach dem OnOK, denn drücke ich jetzt noch mal Enter -> 06 Wie kann ich den Fehler umgehen ? Danke Heiko |
Re: DateTimePicker OnKeyDown Datum nicht aktualisiert
Also bei mir funktioniert beides.
Welche Delphi-Version hast du? (Habe D7) Und warum benutzt die nicht die Events vom DatePicker? |
Re: D6: DateTimePicker OnKeyDown Datum nicht aktualisiert
Hallo,
D6. Hast du das genauso gemacht wie ich es geschrieben habe ? Also einmal nach links zum Monat, dann 6 eintippern, dann Enter. Also wirklich nur die 6 eingeben und dann SOFORT Enter drücken. Nicht erst zum Jahr gehen. Das OnChange wird erst dann aufgerufen, wenn man entweder OnOK oder aus dem "Monat"-Editor rausgeht, z.B. wenn man zum Jahr weitergeht. Heiko |
Re: D6: DateTimePicker OnKeyDown Datum nicht aktualisiert
Hi Hoika,
achso, du meintest mit "Tastatur umstellen" eine Zahl eingeben - ich habe das Datum mit den Cursortasten geändert, und da hat es geklappt. Stimmt - wenn ich direkt eine Zahl eingebe, geht es auch bei mir nicht. Eine Lösung wäre evt. das:
Delphi-Quellcode:
Grüße,
procedure TForm1.OnOK;
begin Form1.SetFocus; ShowMessage(DateToStr(Int(DateTimePicker1.Date))); DateTimePicker1.SetFocus; end; ben |
Re: D6: DateTimePicker OnKeyDown Datum nicht aktualisiert
Hallo,
deine Lösung klappt leider auch nicht. (Das ProcessMessages und Sleep war auch ein Test)
Delphi-Quellcode:
Die einzige, unbefriedigende Lösung ist,
procedure TForm1.OnOK;
begin Self.SetFocus; Application.ProcessMessages; Sleep(200); DateTimePicker1.SetFocus; DateTimePicker1.Refresh; ShowMessage(DateToStr(Int(DateTimePicker1.Date))); end; das KeyPreview rauszunehmen und nur den OK-Knopf zu erlauben ;( Heik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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