![]() |
selber erkennen von CheckBox
Hallo, ich habe ein problem bei einem programm.
ich möchte ein pizza programm erstellen, falls ich mal eine pizza bestelle. es soll mir ausrechnen, wie viel ich für meine zusammenstellung bezahlen soll. dazu habe ich 3 radio buttons, 5 CheckBox und 1 berechnenbutton und ein edit1 feld RadioButton 1- 3 für die Pizza Größe und CheckBox 1-5 für Beläge ich will jetzt mit einer if-schleife den preis der pizza berechnen: wenn berechnenbutton angeklickt wird If RadioButton1.checked then > wie kann ich jetzt von delphi herausfinden lassen welche checkboxes angeklickt sind? Zum Beispiel RadioButton 1: Caption Mini Pizza 2€ checked CheckBox1: Caption Ei 0,5€ checked CheckBox2: Caption Salami 0,5€ CheckBox3: Caption Mais 0,5€ checked CheckBox4: Caption Thunfisch 0,5€ CheckBox5: Caption Ananas 0,5€ und das das programm so rechnet: Mini Pizza 2€ + Ei 0,5€ + Mais 0,5€ = 3€ dann ausgabe in edit1: 3€ else if RadioButtin2.checked them... ich hoffe ich habe das problem ausreichend erklärt. im vorraus schonmal danke für eure hilfe |
Re: selber erkennen von CheckBox
Ich weiß natürlich nicht, wie das alles bei dir heißt, aber es sollte verständlich sein.
Die Tatsache, dass das ein komisches Prog ist ist ja nicht relevant
Delphi-Quellcode:
Für Fortgeschrittene: Ich weiß, dass "+0,40" nicht sinnvoll ist, aber es verdeutlicht den Geldbetrag besser
var
Kosten:Real; If kleinePizza.Checked then Kosten:=1,50; // 3 Radiobuttons - Pizzagröße If mittlerePizza.Checked then Kosten:=2,30; If grossePizza.Checked then Kosten:=3; if Thunfisch.Checked then Kosten:=Kosten+0,30; // 5 Chechboxen - Belag if Ei.Checked then Kosten:=Kosten+0,40; if Salami.Checked then Kosten:=Kosten+1; if Käse.Checked then Kosten:=Kosten+0,50; if Gold.Checked then Kosten:=Kosten+5016; EditKosten.Text:=FloatToStr(Kosten) Dein Titel ist nicht sehr aussagekräftig. Für spätere Suchende solltest du ihn vielleicht ändern. |
Re: selber erkennen von CheckBox
Wenn du in der Tag property der Checkboxes den Preisaufschlag speicherst, geht auch folgendes:
Delphi-Quellcode:
for i := 0 to Form1.ControlCount - 1 do
if Form1.Controls[i] is TCheckbox then GesamtPreis := GesamtPreis + Form1.Controls[i].Tag; |
Re: selber erkennen von CheckBox
Ich würde statt der einzelnen Radiobuttons eine Radiogroup nehmen, dann kannst du mit dem ItemIndex ein Case machen...
Gruß Daniel |
Re: selber erkennen von CheckBox
Sind ja keine Radiobuttons, sondern Checkboxes
|
Re: selber erkennen von CheckBox
Zitat:
Deshalb der Hinweis auf die RadioGroup... Gruß Daniel |
Re: selber erkennen von CheckBox
Ups...sorry
Bisschen vorschnell gepostet, dachte du beziehst dich auf mein Posting. :oops: |
Re: selber erkennen von CheckBox
ok, danke. jetzt kann pizzas bestellen :thumb:
|
Re: selber erkennen von CheckBox
ich hab das jetzt nach dem modell von Jarmen_Kell aufgebaut:
var Kosten:Real; begin If RadioButton1.checked then Kosten:= 3.50; If RadioButton2.checked then Kosten:= 6.50; If RadioButton3.checked then Kosten:=3.20; If RadioButton1.checked then if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; if CheckBox3.Checked then Kosten:= Kosten + 0.55; if CheckBox4.Checked then Kosten:= Kosten + 0.55; if CheckBox5.Checked then Kosten:= Kosten + 0.55; if CheckBox6.Checked then Kosten:= Kosten + 0.55; if CheckBox7.Checked then Kosten:= Kosten + 0.55; if CheckBox8.Checked then Kosten:= Kosten + 0.55; if CheckBox9.Checked then Kosten:= Kosten + 0.55; if CheckBox10.Checked then Kosten:= Kosten + 0.55; if CheckBox11.Checked then Kosten:= Kosten + 0.55; if CheckBox12.Checked then Kosten:= Kosten + 0.55; if CheckBox13.Checked then Kosten:= Kosten + 0.55; if CheckBox14.Checked then Kosten:= Kosten + 0.55; if CheckBox15.Checked then Kosten:= Kosten + 0.55; if CheckBox16.Checked then Kosten:= Kosten + 0.55; if CheckBox17.Checked then Kosten:= Kosten + 0.55; if CheckBox18.Checked then Kosten:= Kosten + 0.55; if CheckBox19.Checked then Kosten:= Kosten + 0.55; if CheckBox20.Checked then Kosten:= Kosten + 0.55; if CheckBox21.Checked then Kosten:= Kosten + 0.55; if CheckBox22.Checked then Kosten:= Kosten + 0.55; if CheckBox23.Checked then Kosten:= Kosten + 0.55; if CheckBox24.Checked then Kosten:= Kosten + 0.55; if CheckBox25.Checked then Kosten:= Kosten + 0.55; if CheckBox26.Checked then Kosten:= Kosten + 0.55; if CheckBox27.Checked then Kosten:= Kosten + 0.55; if CheckBox28.Checked then Kosten:= Kosten + 0.8; if CheckBox29.Checked then Kosten:= Kosten + 0.8; if CheckBox30.Checked then Kosten:= Kosten + 0.8; if CheckBox31.Checked then Kosten:= Kosten + 0.8; if CheckBox32.Checked then Kosten:= Kosten + 0.8; if CheckBox33.Checked then Kosten:= Kosten + 0.8; if CheckBox34.Checked then Kosten:= Kosten + 0.8; if CheckBox35.Checked then Kosten:= Kosten + 0.8; if CheckBox36.Checked then Kosten:= Kosten + 0.8; if CheckBox37.Checked then Kosten:= Kosten + 0.8; if CheckBox38.Checked then Kosten:= Kosten + 2.3; if CheckBox39.Checked then Kosten:= Kosten + 2.3; if CheckBox40.Checked then Kosten:= Kosten + 2.3; if CheckBox41.Checked then Kosten:= Kosten + 2.3; if CheckBox42.Checked then Kosten:= Kosten + 2.3; Label3.caption:= FloatToStr (Kosten) ; If RadioButton3.checked then if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; if CheckBox3.Checked then Kosten:= Kosten + 0.55; if CheckBox4.Checked then Kosten:= Kosten + 0.55; if CheckBox5.Checked then Kosten:= Kosten + 0.55; if CheckBox6.Checked then Kosten:= Kosten + 0.55; if CheckBox7.Checked then Kosten:= Kosten + 0.55; if CheckBox8.Checked then Kosten:= Kosten + 0.55; if CheckBox9.Checked then Kosten:= Kosten + 0.55; if CheckBox10.Checked then Kosten:= Kosten + 0.55; if CheckBox11.Checked then Kosten:= Kosten + 0.55; if CheckBox12.Checked then Kosten:= Kosten + 0.55; if CheckBox13.Checked then Kosten:= Kosten + 0.55; if CheckBox14.Checked then Kosten:= Kosten + 0.55; if CheckBox15.Checked then Kosten:= Kosten + 0.55; if CheckBox16.Checked then Kosten:= Kosten + 0.55; if CheckBox17.Checked then Kosten:= Kosten + 0.55; if CheckBox18.Checked then Kosten:= Kosten + 0.55; if CheckBox19.Checked then Kosten:= Kosten + 0.55; if CheckBox20.Checked then Kosten:= Kosten + 0.55; if CheckBox21.Checked then Kosten:= Kosten + 0.55; if CheckBox22.Checked then Kosten:= Kosten + 0.55; if CheckBox23.Checked then Kosten:= Kosten + 0.55; if CheckBox24.Checked then Kosten:= Kosten + 0.55; if CheckBox25.Checked then Kosten:= Kosten + 0.55; if CheckBox26.Checked then Kosten:= Kosten + 0.55; if CheckBox27.Checked then Kosten:= Kosten + 0.55; if CheckBox28.Checked then Kosten:= Kosten + 0.8; if CheckBox29.Checked then Kosten:= Kosten + 0.8; if CheckBox30.Checked then Kosten:= Kosten + 0.8; if CheckBox31.Checked then Kosten:= Kosten + 0.8; if CheckBox32.Checked then Kosten:= Kosten + 0.8; if CheckBox33.Checked then Kosten:= Kosten + 0.8; if CheckBox34.Checked then Kosten:= Kosten + 0.8; if CheckBox35.Checked then Kosten:= Kosten + 0.8; if CheckBox36.Checked then Kosten:= Kosten + 0.8; if CheckBox37.Checked then Kosten:= Kosten + 0.8; if CheckBox38.Checked then Kosten:= Kosten + 2.3; if CheckBox39.Checked then Kosten:= Kosten + 2.3; if CheckBox40.Checked then Kosten:= Kosten + 2.3; if CheckBox41.Checked then Kosten:= Kosten + 2.3; if CheckBox42.Checked then Kosten:= Kosten + 2.3; Label3.caption:= FloatToStr (Kosten) ; if RadioButton2.checked then if CheckBox1.Checked then Kosten:= Kosten + 1.10; if CheckBox2.Checked then Kosten:= Kosten + 1.10; if CheckBox3.Checked then Kosten:= Kosten + 1.10; if CheckBox4.Checked then Kosten:= Kosten + 1.10; if CheckBox5.Checked then Kosten:= Kosten + 1.10; if CheckBox6.Checked then Kosten:= Kosten + 1.10; if CheckBox7.Checked then Kosten:= Kosten + 1.10; if CheckBox8.Checked then Kosten:= Kosten + 1.10; if CheckBox9.Checked then Kosten:= Kosten + 1.10; if CheckBox10.Checked then Kosten:= Kosten + 1.10; if CheckBox11.Checked then Kosten:= Kosten + 1.10; if CheckBox12.Checked then Kosten:= Kosten + 1.10; if CheckBox13.Checked then Kosten:= Kosten + 1.10; if CheckBox14.Checked then Kosten:= Kosten + 1.10; if CheckBox15.Checked then Kosten:= Kosten + 1.10; if CheckBox16.Checked then Kosten:= Kosten + 1.10; if CheckBox17.Checked then Kosten:= Kosten + 1.10; if CheckBox18.Checked then Kosten:= Kosten + 1.10; if CheckBox19.Checked then Kosten:= Kosten + 1.10; if CheckBox20.Checked then Kosten:= Kosten + 1.10; if CheckBox21.Checked then Kosten:= Kosten + 1.10; if CheckBox22.Checked then Kosten:= Kosten + 1.10; if CheckBox23.Checked then Kosten:= Kosten + 1.10; if CheckBox24.Checked then Kosten:= Kosten + 1.10; if CheckBox25.Checked then Kosten:= Kosten + 1.10; if CheckBox26.Checked then Kosten:= Kosten + 1.10; if CheckBox27.Checked then Kosten:= Kosten + 1.10; if CheckBox28.Checked then Kosten:= Kosten + 1.60; if CheckBox29.Checked then Kosten:= Kosten + 1.60; if CheckBox30.Checked then Kosten:= Kosten + 1.60; if CheckBox31.Checked then Kosten:= Kosten + 1.60; if CheckBox32.Checked then Kosten:= Kosten + 1.60; if CheckBox33.Checked then Kosten:= Kosten + 1.60; if CheckBox34.Checked then Kosten:= Kosten + 1.60; if CheckBox35.Checked then Kosten:= Kosten + 1.60; if CheckBox36.Checked then Kosten:= Kosten + 1.60; if CheckBox37.Checked then Kosten:= Kosten + 1.60; if CheckBox38.Checked then Kosten:= Kosten + 4.60; if CheckBox39.Checked then Kosten:= Kosten + 4.60; if CheckBox40.Checked then Kosten:= Kosten + 4.60; if CheckBox41.Checked then Kosten:= Kosten + 4.60; if CheckBox42.Checked then Kosten:= Kosten + 4.60 ; Label3.caption:= FloatToStr (Kosten); Kurze Erklärung: RadioButton1 : kleine pizza Radiobutton2: mittlere Radiobutton3: große CheckBox1-42: Beläge jetzt kostet der belag für große pizza mehr als für klein und mittel. wenn ich nun eine pizza ausrechnen möchte kommt immer etwas falsches raus . liegt es vielleicht an der If-Schleife ??? |
Re: selber erkennen von CheckBox
wie kann ich also das zusammenfassen
das wenn der erste RadioButton nicht angeklickt ist, das das programm zum nächsten button geht If RadioButton1.checked then if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; if CheckBox3.Checked then Kosten:= Kosten + 0.55; if CheckBox4.Checked then Kosten:= Kosten + 0.55; ... wenn nicht .checked dann soll er den nächsten button prüfen If RadioButton3.checked then if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; if CheckBox3.Checked then Kosten:= Kosten + 0.55; ... was muss ich an der schleife ändern, damit das programm funktioniert ? |
Re: selber erkennen von CheckBox
Erstens pushen ist erst nach 24h erlaubt
zweitens benutze bitte die Delphi Tags
Code:
dritens hast du einen Fehler: du prüfst zuerst den RadioButton1 dann 3 und dann die 2 die Beiläge Preise werden aber immer mehr.
[delphi][/delphi]
viertens kannst du mit begin und end die Befehle "gruppieren"
Delphi-Quellcode:
If RadioButton1.checked then //Prüfen ob es markiert ist
bergin if CheckBox1.Checked then Kosten:= Kosten + 0.55; //wenn ja dann hier her if CheckBox2.Checked then Kosten:= Kosten + 0.55; ... end; If RadioButton2.checked then //wenn nicht dann hier her bergin if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; ... end; If RadioButton3.checked then bergin if CheckBox1.Checked then Kosten:= Kosten + 0.55; if CheckBox2.Checked then Kosten:= Kosten + 0.55; ... end; |
Re: selber erkennen von CheckBox
Entschuldige wenn ich so offen bin, aber bei dem Code rollen sich einem ja die Fußnägel auf. Nicht böse gemeint (meine ersten Progs sahen auch nicht unbedingt schön aus), aber ich denke, im Dienste der Lesbarkeit wäre wohl folgendes besser (siehe auch mein vorheriger Post):
Delphi-Quellcode:
Genau für solche Sachen ist die Tag property ja da: Um dem Programmierer die Möglichkeit zu geben, Daten mit in der Control abzuspeichern--notfalls halt als pointer.
var Belagkosten,
Grundkosten, Gesamtkosten: real; i : integer; begin Belagkosten := 0; for i := 0 to (ControlCount - 1) do // Alle untergeordneten Controls des Forms durchlaufen if Controls[i] is TCheckbox then // Gucken was das für ne Control ist Belagkosten := Belagkosten + Controls[i].Tag / 100; // Speicher in Tag den Preis in Cents if Radiobutton3.Checked then Belagkosten := Belagkosten * 2; // Bei großer Pizza kostet der Belag doppelt if Radiobutton1.Checked then Grundkosten := 1,50; if Radiobutton2.Checked then Grundkosten := 2,30; if Radiobutton3.Checked then Grundkosten := 3,00; Gesamtkosten := Grundkosten + Belagkosten; Label3 := FloatToStr(Gesamtkosten); end; Den Tipp von dfried find ich übrigens auch gut (-> Radiogroup). Macht den Code nochmal eine Ecke eleganter. Und schon richtig, interessante Programmidee :mrgreen: Guten appetit |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz