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/)
-   -   Delphi D6: DateTimePicker OnKeyDown Datum nicht aktualisiert (https://www.delphipraxis.net/116963-d6-datetimepicker-onkeydown-datum-nicht-aktualisiert.html)

hoika 9. Jul 2008 12:31


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

bwolf 9. Jul 2008 12:48

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?

hoika 9. Jul 2008 15:06

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

bwolf 10. Jul 2008 09:25

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:
procedure TForm1.OnOK;
begin
  Form1.SetFocus;
  ShowMessage(DateToStr(Int(DateTimePicker1.Date)));
  DateTimePicker1.SetFocus;
end;
Grüße,
ben

hoika 10. Jul 2008 09:49

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:
procedure TForm1.OnOK;
begin
  Self.SetFocus;
  Application.ProcessMessages;
  Sleep(200);

  DateTimePicker1.SetFocus;
  DateTimePicker1.Refresh;

  ShowMessage(DateToStr(Int(DateTimePicker1.Date)));
end;
Die einzige, unbefriedigende Lösung ist,
das KeyPreview rauszunehmen und nur den OK-Knopf zu erlauben ;(



Heik


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.

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