![]() |
Groupboxen, Comboboxen
Ich hab auf einer Form zwei Groupboxen, bei der einen 3 und bei der anderen 5 Checkboxen drauf. Dazu kommt eine Combobox wo ich zwei Spielmodi aussuchen kann. Die Form startet vor dem eigentlichen Spiel. Der Spieler sucht sich die Musik, den Schwierigkeitsgrad und den Spielmodi aus. Meine Frage: Ich wollte eine if then else abfrage machen. Wenn der Spieler auf den Starten Button drückt, muss er jeweils immer eine Checkbox in beiden Groupboxen angeklickt haben, einen Spielmodi bei der Checkbox gewählt haben, er muss drei Einstellungen gewählt haben, dann startet das Spiel, sonst soll es noch mal Showmessage zeigen. Wie kann ich das schreiben ?
Das Problem steht nach der WICHTIG!!!!!!!!!!!!!!!!!!.
Delphi-Quellcode:
{=============================================================================================================================}
procedure TForm15.Button1.Click; begin begin if Checkbox1.Checked then Showmessage ('Sie haben Leicht gewählt'); if Checkbox2.Checked then Showmessage ('Sie haben Mittel gewählt'); if Checkbox3.Checked then Showmessage ('Sie haben Schwer gewählt'); if Checkbox4.Checked then Showmessage ('Sie haben Music1 gewählt'); if Checkbox5.Checked then Showmessage ('Sie haben Music2 gewählt'); if Checkbox6.Checked then Showmessage ('Sie haben Music3 gewählt'); if Checkbox7.Checked then Showmessage ('Sie haben Music4 gewählt'); if Checkbox8.Checked then Showmessage ('Sie haben Music5 gewählt'); if ComboBox1.ItemIndex = 0 then Showmessage ('Sie haben Klassik gewählt'); if ComboBox1.ItemIndex = 1 then Showmessage ('Sie haben Spezial gewählt'); end; WICHTIG!!!!!!!!!!! if // hier brauch ich Hilfe --> wenn eine Checkbox geklickt bei Groupbox 1 und 2 sowie einen Spielmodi bei Combobox gewählt dann then begin if MessageDlg('Wirklich Beenden ?', mtInformation,[mbYes,mbNo],0)=6; // Frage gestellt bevor Start then Form15.Close end; else // wenn es nicht erfüllt ist begin Showmessage('Bitte wähle einen Spielmodus, einen Schwierigkeitsgrad und eine Musik'); // keine drei Einstellungen gewählt deswegen Showmessage end; end; {=============================================================================================================================} end. |
Re: Groupboxen, Comboboxen
IMHO hast Du für die Auswahl die falschen Komponenten gewählt. Was geschieht denn, wenn der Nutzer Musik1 und Musik2 angehakt hat? Ich würde an Deiner Stelle auf RadioGroups oder weitere ComboBoxen ausweichen, da kannst Du einen Standard definieren und es gibt garantiert auch nur eine einzige Auswahlmöglichkeit.
[edit] *Ääätsch*, schneller :tongue: [/edit] |
Re: Groupboxen, Comboboxen
Hallo,
warum nimmst Du keine RadioGroup und prüfst einfach auf...
Delphi-Quellcode:
Hat auch den Vorteil, das immer ein Modus aktiv ist. Es wäre gar nicht möglich keine Auswahl getroffen zu haben.
case RadioGruop.ItemIndex of
0:... 1:... (Es sei denn es muss umbedingt so sein, dann...
Delphi-Quellcode:
Gruß Jens
RadioGroup.ItemIndex := -1;
|
Re: Groupboxen, Comboboxen
Zitat:
|
Re: Groupboxen, Comboboxen
Zitat:
|
Re: Groupboxen, Comboboxen
Also da ist ein Fehler. Ich find ihn nicht. Die exe geht gerade so, aber nicht der Rest. procedure Leiste zeigt Fehler !
Delphi-Quellcode:
das hab ich geschafft, aber es will nicht irgendwo bei case liegt der Fehler.
{=====================================================================}
procedure TForm1.LeisteDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if Leiste.Cells[ACol,Arow] <> '-1' --> Fehler wird hier angezeigt !!!!!!!!!!!!!!!!!!!!!! then case Leiste.Cells[ACol,ARow][1] of '0' : Leiste.Canvas.Brush.Color := clRed; '1' : Leiste.Canvas.Brush.Color := clBlue; '2' : Leiste.Canvas.Brush.Color := clYellow; '3' : Leiste.Canvas.Brush.Color := clGreen; '4' : Leiste.Canvas.Brush.Color := clWhite; else Leiste.Canvas.Brush.Color := clBlack; // Farbe für "gelöscht" end; // endcase Leiste.Canvas.Pen.Color := clBlack; Leiste.Canvas.Rectangle(Rect); end; {=====================================================================} Das was ihr mir vorgeschlagen habt: {=====================================================================} procedure TForm15.Button1Click(Sender: TObject); begin { case ComboBox1.ItemIndex of ---------------> Combobox, wo die Musik gewählt wird 0: begin Form1.mediaPlayer1.FileName := 'Collapse.wav'; Form1.mediaplayer1.Open; Form1.mediaplayer1.Play; if Form1.mediaPlayer1.Position = Form1.mediaPlayer1.Length then begin Form1.mediaPlayer1.Rewind; Form1.mediaPlayer1.Play; end; end; 1: begin Form1.mediaplayer1.FileName := 'horse.wav'; Form1.mediaplayer1.Open; Form1.mediaplayer1.Play; if Form1.mediaPlayer1.Position = Form1.mediaPlayer1.Length then begin Form1.mediaPlayer1.Rewind; Form1.mediaPlayer1.Play; end; end; 2: begin Form1.mediaplayer1.FileName := 'electro.wav'; Form1.mediaplayer1.Open; Form1.mediaplayer1.Play; if Form1.mediaPlayer1.Position = Form1.mediaPlayer1.Length then begin Form1.mediaPlayer1.Rewind; Form1.mediaPlayer1.Play; end; end; 3: begin Form1.mediaplayer1.FileName := 'Memories.wav'; Form1.mediaplayer1.Open; Form1.mediaplayer1.Play; if Form1.mediaPlayer1.Position = Form1.mediaPlayer1.Length then begin Form1.mediaPlayer1.Rewind; Form1.mediaPlayer1.Play; end; end; 4: begin Form1.mediaplayer1.FileName := 'Jackin.wav'; Form1.mediaplayer1.Open; Form1.mediaplayer1.Play; if Form1.mediaPlayer1.Position = Form1.mediaPlayer1.Length then begin Form1.mediaPlayer1.Rewind; Form1.mediaPlayer1.Play; end; end; end; case Radiogroup1.ItemIndex of --> hier wird Schwierigkeitsgrad gewählt wird 0: begin Showmessage ('Sie haben Leicht gewählt'); Form1.NeuesSpiel; Form1.Zeit.Enabled := true; // Uhr anschalten Form1.Zeit.Interval := 500; // Zeitintervall beträgt 700 Millisekunden Form1.StatusBar1.Panels[1].Text := 'Runden : 30'; Runden := 30; Form1.Leicht.Enabled := False; // deaktiviert Leicht, da geladen Form1.Mittel.Enabled := True; Form1.Schwer.Enabled := True; Form1.StatusBar1.Panels[0].Text := 'Punkte : 0'; Punkte := 0; if Runden = 0 then begin Level :=Level+1; Runden :=(Level-1)*5+30; Form1.Zeit.Interval := Form1.Zeit.Interval-5; end; begin if anzahlGleichfarbigerbloecke > 1 then begin Form1.GleicheFarbenLoeschen; end; end end; 1: begin Showmessage ('Sie haben Mittel gewählt'); Form1.NeuesSpiel; Form1.Zeit.Enabled := true; // Uhr anschalten Form1.Zeit.Interval := 350; // Zeitintervall beträgt 300 Millisekunden Form1.Statusbar1.Panels[1].Text := 'Runden : 50'; Runden := 50; Form1.Leicht.Enabled := True; Form1.Mittel.Enabled := False; // deaktiviert Mittel, da geladen Form1.Schwer.Enabled := True; Form1.Statusbar1.Panels[0].Text := 'Punkte : 0'; Punkte := 0; end; 2: begin Showmessage ('Sie haben Schwer gewählt'); Form1.NeuesSpiel; Form1.Zeit.Enabled := true; // Uhr anschalten Form1.Zeit.Interval := 200; // Zeitintervall beträgt 100 Millisekunden Form1.Statusbar1.Panels[1].Text := 'Runden : 70'; Runden := 70; Form1.Leicht.Enabled := True; Form1.Mittel.Enabled := True; Form1.Schwer.Enabled := False; // deaktiviert Schwer, da geladen Form1.Statusbar1.Panels[0].Text := 'Punkte : 0'; Punkte := 0; end; end; begin if ComboBox1.ItemIndex = 0 then Showmessage ('Sie haben Collapse Music gewählt'); if ComboBox1.ItemIndex = 1 then Showmessage ('Sie haben Amazing Horse gewählt'); if ComboBox1.ItemIndex = 2 then Showmessage ('Sie haben Electro Gypsy gewählt'); if ComboBox1.ItemIndex = 3 then Showmessage ('Sie haben Memories gewählt'); if ComboBox1.ItemIndex = 4 then Showmessage ('Sie haben Swagger Jackin gewählt'); end; } if ComboBox1.ItemIndex = 0 then begin if MessageDlg('Wirklich Beginnen ?',mtInformation,[mbYes,mbNo],0)=6 // Frage gestellt bevor Start then Form15.Close; end else begin Showmessage('Bitte wähle einen Spielmodus, einen Schwierigkeitsgrad und eine Musik !');// müssen drei Einstellungen gewählt sein end; end; {=====================================================================} procedure TForm15.ComboBox1Change(Sender: TObject); begin if ComboBox1.ItemIndex = 0 then begin Form1.NeuesSpiel; Form1.StatusBar1.Panels[0].Text := 'Punkte : 0'; Form1.StatusBar1.Panels[1].Text := 'Runden : 30'; Punkte := 0; Runden := 30; anzahlgleichfarbigerbloecke := 0; Form1.Zeit.Enabled := true; Form13.start := now; Form1.Spielmodus1.Enabled := False; Form1.Schwierigkeitsgrad.Enabled := False; Form1.Highscore1.Enabled := False; Form9.Close; end else begin Form1.NeuesSpiel; Form1.StatusBar1.Panels[0].Text := 'Punkte : 0'; Form1.StatusBar1.Panels[1].Text := 'Runden : 50'; Punkte := 0; Runden := 50; anzahlgleichfarbigerbloecke := 0; Form1.Zeit.Enabled := true; Form13.start := now; Form1.Spielmodus1.Enabled := False; Form1.Schwierigkeitsgrad.Enabled := False; Form1.Highscore1.Enabled := False; Form9.Close; end; end; {=====================================================================} end. |
Re: Groupboxen, Comboboxen
Hast Du die Radiogroups erstellt und dann aus dem OI Radiobuttons eingefügt? Dann kannst Du den ItemIndex nicht abfragen, Du musst die Radiobuttons über die Items-Eigenschaft der Radiogroup hinzufügen.
|
Re: Groupboxen, Comboboxen
Ich hab die Radiogroup erst erstellt, dann einzeln von oben die Radiobuttons draufgesetzt.
:pale: :oops: |
Re: Groupboxen, Comboboxen
Du musst nicht denken, dass Du der erste bist, der das so gemacht hat und sich dann wundert :zwinker:
|
Re: Groupboxen, Comboboxen
Zitat:
Weist wo der Fehler liegt? Leider die Radiobuttons sind nicht der Fehler. Die Leiste (das Spielfeld) zeigt bei case of einen Fehler. Kann es sein das sich der case of Teil von der Leiste mit dem case of Teil von der Radiogroup und der Combobox überschneiden. siehe Delphi Quelltext oben ????? :gruebel: :gruebel: :gruebel: :gruebel: :gruebel: :gruebel: :gruebel: :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz