AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DateTimePicker; OnChange-Ereignis automatisch 2 mal???
Thema durchsuchen
Ansicht
Themen-Optionen

DateTimePicker; OnChange-Ereignis automatisch 2 mal???

Ein Thema von TypusMensch · begonnen am 22. Jul 2004 · letzter Beitrag vom 23. Sep 2004
Antwort Antwort
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#1

DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 22. Jul 2004, 15:08
Habe ein DateTimePicker auf meinem Formular. Aus Testzwecken wollte ich nun folgendes probieren:

Code:
procedure TFestbearbeit.DateTimePicker2Change(Sender: TObject);
begin
Showmessage(datetostr(DateTimePicker2.Date));
end;

Seltsamer Weise gibt er mir das Datum einmal aus, wenn ich das Datum per Tastatur angebe. Wenn ich aber via Kalenderdialog ändere, erscheint 2mal das Fenster mit dem angewählten Datum. Wie unterbinde ich das??? Ich will so oder so nur einmal das Fenster sehen!!!

ThX im vorraus.
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 22. Jul 2004, 16:43
Keiner eine Ahnung???
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 22. Jul 2004, 17:20
Delphi-Quellcode:
 var
  Form1: TForm1;
     i: Integer;
implementation

{$R *.dfm}

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
    i:=i+1;
    if i = 1 then
       Showmessage(datetostr(DateTimePicker1.Date))
    else
      i:=0;
end;
Was dümmeres fällt mir auf die Schnelle nicht ein.
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 22. Sep 2004, 10:38
Hab das selbe Problem....

Die Idee mit der Schleife ist ja so gesehen ganz nett, aber mich würde eher interessieren WARUM das überhaupt so ist
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 10:16
Tja, das ist eigentlich ganz einfach: Bei einer Änderung des Datums wird zweimal die Nachricht CN_NOTIFY mit dem Parameter DTN_DATETIMECHANGE an den DateTimePicker gesendet und der ruft dann zweimal die Change-Methode auf. Man könnte das ganze gut und gerne als Bug bezeichnen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 11:07
Aber Obacht beim Work-Around: OnChange wird nur zweimal ausgelöst, wenn man ein Datum im Kalender auswählt, aber nicht, wenn das Datum direkt im Edit geändert wird.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 11:09
Zitat von Shaman:
Aber Obacht beim Work-Around: OnChange wird nur zweimal ausgelöst, wenn man ein Datum im Kalender auswählt, aber nicht, wenn das Datum direkt im Edit geändert wird.

Gruss
Shaman
Ja das ist mir auch aufgefallen ...

Das Post von Stevie ist eigentlich das, was ich wissen wollte. Obs 'n Bug oder 'n Feature is *g*


Als Work-Around nehm ich übrigens einfach OnCloseUp ... Damit gehts ohne weitere Probs ^^
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 11:17
So sollte es auch gehen:

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  if not FIgnoreChange then
  begin
    ShowMessage('Change');
    FIgnoreChange:= DateTimePicker1.DroppedDown
  end else
    FIgnoreChange:= False;
end;
Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 11:22
So sollte es auch ganz gut gehn und nebenbei ein nettes Beispiel, wofür Tag gut sein kann

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  if DateTimePicker1.Tag = Trunc(DateTimePicker1.Date) then exit;
  DateTimePicker1.Tag := Trunc(DateTimePicker1.Date);
  Showmessage(datetostr(DateTimePicker1.Date));
end;
[add]
@Shaman
das NOT ist doch wohl nicht nötig?
einfach mal das Zeug vor und nach dem ELSE tauschen

und man glaubt's nicht, aber mann kann massig Variablen einsparen, wenn man mal ein bissl mit Hilfe von Typenumwandlung rumspielt http://FNSE.de/S0AN.gif
Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  if LongBool(DateTimePicker1.Tag) then
    DateTimePicker1.Tag := Integer(False)
  else begin
    ShowMessage('Change');
    DateTimePicker1.Tag := Integer(DateTimePicker1.DroppedDown);
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: DateTimePicker; OnChange-Ereignis automatisch 2 mal???

  Alt 23. Sep 2004, 11:38
Zitat von himitsu:
@Shaman
das NOT ist doch wohl nicht nötig?
einfach mal das Zeug vor und nach dem ELSE tauschen
Der interessantere Code kommt immer zuerst

Und den Tag spare ich mir für andere lustige Sachen auf

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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