Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Label wird falsch sichtbar!


Kampf_Kartoffel - Mo 22.10.18 23:40
Titel: Label wird falsch sichtbar!
Hallo,

im unten angegeben Quelltext stoße ich auf das Problem, dass wenn ich beim ausführen des Programmes, wenn ich Button1 klicke und nur Radiobutton1 gechecked ist trotzdem label2, label3 und label 4 sichtbar werden. Warum ist das so und was kann ich ändern damit im genannten Szenario nur label2 sichtbar wird?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
procedure TForm1.Button1Click(Sender: TObject);
var Euro:real;
begin
label2.visible:=false;
label3.visible:=false;
label4.visible:=false;
label5.visible:=false;
 try
 Euro:=strtofloat(edit1.text);

   if (radiobutton1.checked) or (radiobutton2.checked) or (radiobutton3.checked) or (radiobutton4.checked)  then begin

     if (radiobutton1.checked) then
     panel1.caption:=floattostr(Dollar(Euro));
     label2.visible:=true;

     if (radiobutton2.checked) then
     panel1.caption:=floattostr(Forint(Euro));
     label3.visible:=true;

     if (radiobutton3.checked) then
     panel1.caption:=floattostr(Pfund(Euro));
     label4.visible:=true;

     if (radiobutton4.checked) then
     showmessage('dies ist die Ausgangswährung');

   end else begin
   showmessage('Bitte wählen sie eine Währung zum rechnen aus');
   end;

 except
 showmessage('falsche Eingabe');
 edit1.setfocus;
 end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  form1.color:=clwhite;
  edit1.setfocus;
  edit1.clear;
  edit2.clear;
  edit3.clear;
  edit4.clear;
  label2.visible:=false;
  label3.visible:=false;
  label4.visible:=false;
  label5.visible:=false;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 23.10.2018 um 00:11


Narses - Di 23.10.18 00:18

Moin und :welcome: in der EE!

user profile iconKampf_Kartoffel hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich Button1 klicke und nur Radiobutton1 gechecked ist trotzdem label2, label3 und label 4 sichtbar werden. Warum ist das so und was kann ich ändern damit im genannten Szenario nur label2 sichtbar wird?
Ich rate mal, du möchtest beide Befehle ausführen, wenn die Bedingung zutrifft, oder? Dann muss da aber noch ein begin-end drum rum: :idea: :zwinker:

Delphi-Quelltext
1:
2:
3:
4:
     if (radiobutton1.checked) then begin
       panel1.caption:=floattostr(Dollar(Euro));
       label2.visible:=true;
     end;

Weiterhin noch ein Tipp: du solltest besser das Ereignis FormCreate für das Initialisieren des Formulars benutzen, nicht FormActivate. Letzteres wird immer dann aufgerufen, wenn das Formular den Fokus erhält (also mehrmals, nicht nur einmal beim Start des Programms). :idea:

cu
Narses

PS: Falls du Interesse hast, wie man die vielen ".Visible="-Anweisungen einsparen kann, sag bescheid. Da geht noch was. ;)