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 Problem:Checkbox & Radiobutton (https://www.delphipraxis.net/100711-problem-checkbox-radiobutton.html)

Störtebeker 2. Okt 2007 22:37


Problem:Checkbox & Radiobutton
 
Hallo,

ich habe in meinem Programm u.a. eine Statusleiste, in der das Datum angezeigt wird. Über einen "Eigenschaften"-Dialog kann das Datum ein/ausgeschaltet werden. Nun habe ich zwei Radiobutton:

1) Tag / Monat / Jahr
2) Monat / Tag / Jahr

und eine Checkbox

1) Datum anzeigen

Die Checkbox hat folgenden Code:

Delphi-Quellcode:
procedure TForm5.CheckBox1Click(Sender: TObject);
begin
if checkbox1.checked = false
then
begin
Form3.Statusbar1.Panels[4].Text:='';
end
else
begin
Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime('dd.mm.yyyy', Now);
end
end;
So. Wenn ich bei der Checkbox das Häckchen entferne, verschwindet das Datum. Setzte ich das Häckchen, taucht es wieder auf. Nun mein Problem. Lasse ich das Datum verschwinden und setzte den Radiobutton auf das jeweils andere, taucht das Datum wieder auf, ohne dass das Häckchen gesetzt wurde.

Was nun?

mfG
Störtebeker

quendolineDD 2. Okt 2007 22:39

Re: Problem:Checkbox & Radiobutton
 
Wo ist die Abfrage von den Radiobuttons? Die sind in deinem geposteten Quelltext garnicht enthalten ...
Achja, dein Quelltext geht auch einfacher zu schreiben und vor allem übersichtlicher ;)
Delphi-Quellcode:
procedure TForm5.CheckBox1Click(Sender: TObject);
begin
if not CheckBox1.Checked then
   Form3.Statusbar1.Panels[4].Text:= ''
else
   Form3.Statusbar1.Panels[4].Text:= 'Datum:  '+FormatDateTime('dd.mm.yyyy', Now);
end;

DeddyH 2. Okt 2007 22:47

Re: Problem:Checkbox & Radiobutton
 
Ich denke mal so:
Delphi-Quellcode:
procedure TForm5.CheckBox1Click(Sender: TObject);
const DatumsFormat: array[Boolean] of string = ('dd.mm.yyyy','mm.dd.yyyy');
begin
  if not checkbox1.checked then
    Form3.Statusbar1.Panels[4].Text:=''
  else
    Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime(DatumsFormat[RadioButton2.Checked], Now);
end;
Allerdings wäre der Code für den Klick auf den entsprechenden RadioButton noch interessant.

[edit] Naja, immerhin ist mein Code etwas anders ;) [/edit]

Störtebeker 2. Okt 2007 22:51

Re: Problem:Checkbox & Radiobutton
 
Sry. Codes für die Radiobutton reiche ich hiermit nach:

1)Tag / Monat / Jahr

Delphi-Quellcode:
procedure TForm5.RadioButton1Click(Sender: TObject);
begin
Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime('dd.mm.yyyy', Now);
end;

2)Monat / Tag / Jahr

Delphi-Quellcode:
procedure TForm5.RadioButton1Click(Sender: TObject);
begin
Form3.Statusbar1.Panels[4].Text:='Datum:  '+FormatDateTime('mm.dd.yyyy', Now);
end;

DeddyH 2. Okt 2007 22:54

Re: Problem:Checkbox & Radiobutton
 
Wenn Du meinen Code nimmst, kannst Du beide Methoden auskommentieren (sollte dann funktionieren, ungetestet).

Störtebeker 2. Okt 2007 23:03

Re: Problem:Checkbox & Radiobutton
 
Danke. Es funzt.

mfG
Störtebeker

quendolineDD 2. Okt 2007 23:11

Re: Problem:Checkbox & Radiobutton
 
Um mal noch deinen Fehler zu dokumentieren. Du hast zwar bei der Checkbox eine Abfrage, ob angezeigt werden soll oder nicht, aber bei der Radiogroup wird ungeachtet der Checkbox das jeweilige Datumsvormat angezeigt.

Überweise doch einfach den ItemIndex an die Procedur bzw. mach eine Funktion draus.

Delphi-Quellcode:
function setPanelDate(index: integer):string;
const
DateForm: array[boolean] of string = ('dd.mm.yyyy', 'mm.dd.yyyy');
begin
result:= nil;
result:= 'Datum:  '+FormatDateTime(DateForm[index], now);
end;
Aufrufen kannst du das dann mit:
Delphi-Quellcode:
procedure TForm5.CheckBox1Click(Sender: TObject);
begin
if not CheckBox1.Checked then
   Form3.Statusbar1.Panels[4].Text:= ''
else
   Form3.Statusbar1.Panels[4].Text:= setPanelDate(RadioButton2.Checked);
end;
Beides ungetestet!

Angenehme Nacht noch

//Edit:
Hatte Radiobutton1.Checked erst stehen, was aber falsch ist, da doch hier ein Boolean zurückgeliefert wird, welcher bei false = 0 ist und bei true = 1 ... und die beiden Datenformate in der Konstante sind intern in Delphi auch mit 0 und 1 indexiert.


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