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 Narses: Delphi-Tags hinzugefügtModeriert von Narses: 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!
Kampf_Kartoffel hat folgendes geschrieben : |
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. ;)