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 Datum in Statusleiste (https://www.delphipraxis.net/101556-datum-statusleiste.html)

Störtebeker 15. Okt 2007 13:45


Datum in Statusleiste
 
Hallo,

ich habe ein kleines Problem mit dem Anzeigen des Datums in der Statusleiste.

Vorhanden:
2 Radiobutton
1) Tag / Monat / Jahr (RadioButton3)
2) Monat / Tag / Jahr (RadioButton4)

1 Checkbox
1) Datum anzeigen

"Datum anzeigen" hat folgenden Code:

Delphi-Quellcode:
procedure TForm3.CheckBox19Click(Sender: TObject);
const DatumsFormat: array[Boolean] of string = ('dd.mm.yyyy','mm.dd.yyyy');
begin
  if not checkbox19.checked then
    Form1.Statusbar1.Panels[4].Text:=''
  else
    Form1.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime(DatumsFormat[RadioButton4.Checked], Now);
end;
Nun ist das Problem, dass sich das Datum erst ändert, wenn ich die Checkbox aus- und dann wieder aktiviere.

P.S.: Die Radiobutton haben die Codes:

Delphi-Quellcode:
//Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime('dd.mm.yyyy', Now);
und

Delphi-Quellcode:
//Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime('mm.dd.yyyy', Now);
Man hatte mir gesagt, mit dem Code ganz oben, kann ich die Codes des Radiobutton rausnehmen. Ich habe sie jetzt mit "//" einfach in ein Kommentar umgewandelt.

Was kann man da machen, dass das Datum auch wechselt, ohne dass ich erst die Checkbox zweimal auslösen muss?

mfG
Störtebeker

DelphiKlaus 15. Okt 2007 13:51

Re: Datum in Statusleiste
 
Hallo,

da Du die Änderung in der CheckBox19Click-Routine machst, ist es doch ganz logisch, dass sich die anzeige nur ändert, wenn Du die Checkbox bedienst. Vielleicht solltest Du über den Einsatz eines Timers nachdenken?

MfG

Klaus

Störtebeker 15. Okt 2007 13:55

Re: Datum in Statusleiste
 
Hi,

:wall: Danke, für den Tipp. Jetzt geht es wunderbar.

mfG
Störtebeker

raiguen 15. Okt 2007 21:03

Re: Datum in Statusleiste
 
:gruebel: kann den Sinn eines Timereinsatzes irgendwie nicht richtig nachvollziehen :roll:

Wie wäre es denn mit der folgenden - würd sagen schon fast banalen - Idee, das OnClick-Ereignis der Radiobutton 3 bzw -4 auf die Procedure Checkbox19.OnClick zu verweisen bzw zu verlinken?? Entweder schon im OI, sofern dem nix entgegensteht oder aber im Onclick-Ereignis expliziet mit
Code:
procedure TForm3.RadioButton3Click(Sender: Tobject);
begin
   ...
   CheckBox19Click(Sender);
   ...
end;
Somit wird die gewünschte DatumFormat sofort angezeigt (sofern CheckBox19 gecheckt ist ;) )...

oki 15. Okt 2007 21:31

Re: Datum in Statusleiste
 
Hi,

lager den Code in eine eigene Procedure aus:

Delphi-Quellcode:
procedure TForm3.ShowDate(Value : Boolean);
const DatumsFormat: array[Boolean] of string = ('dd.mm.yyyy','mm.dd.yyyy');
begin
  if not Value then
    Form1.Statusbar1.Panels[4].Text:=''
  else
    Form1.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime(DatumsFormat[RadioButton4.Checked], Now);
end;
Dann kannst du diese an jeder beliebigen Stelle mit dem entsprechenden Parameter aufrufen:
Delphi-Quellcode:
procedure TForm3.CheckBox19Click(Sender: TObject);
begin
  ShowDate(checkbox19.checked);
end;
Und an jeder anderen Stelle, wenn das Datum aktualisiert werden soll. Die Timerlösung hilft auf jeden Fall das Datum zu aktualisieren wenn ein Datumswechsel auftritt und gerade keiner was tut (Mitternacht).

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 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