![]() |
Durch Zufall zweite Form öffnen
Hallo Leute...
Ich und meine Freundin sind noch richtige Anfänger, was das programmieren der Delphi-Sprache angeht. Doch im Rahmen eines Schulprojektes müssen wir nun ei Delphiporgramm selbst erstellen, wobei wir jetzt gerade vor dem folgenden Problem stehe: Ich habe Form 1 bi s 8 und versuche dass sich per Knopfdruck einer dieser zufällig öffnet. Mein Text sieht so aus: mit Checkboxen habe ich gearbeitet.
Delphi-Quellcode:
Ich hoffe jemand könnte mir weiterhelfen.
procedure TForm1.Panel1Click(Sender: TObject);
var z1,z2,f1,f2,f3,f4,f5,f6:integer; begin if (checkbox1.checked=true) //Um die nächste Seite zu öffnen and (checkbox2.checked=false) and (checkbox3.checked=false) and (checkbox4.checked=false) and (checkbox6.checked=false) and (checkbox8.checked=false) and (checkbox9.checked=false) and (checkbox5.checked=true) and (checkbox7.checked=true) then randomize; for z1 := 1 to 3 do f1:=(random(4)); edit1.text:=IntToStr(f1); if edit1.text='0' then form2.show; if edit1.text='1' then form2.show; if edit1.text='2' then form2.show; (checkbox1.checked=true) //Um die nächste Seite zu öffnen and (checkbox2.checked=false) and (checkbox3.checked=false) and (checkbox4.checked=false) and (checkbox6.checked=false) and (checkbox8.checked=false) and (checkbox9.checked=false) and (checkbox5.checked=true) and (checkbox7.checked=true) then form1.Hide; else showmessage('FEHLER SIND NOCH VORHANDEN'); Mit freundlichen Grüßen Lena [edit=SirThornberry]Delphi-Tags gesetzt und Sprache korrigiert (Schulprogrammierung ist kein .NET) - Mfg, SirThornberry[/edit] |
Re: Durch Zufall zweite Form öffnen
Programmierst du wirklich mit Delphi.Net?
Für mich sieht es nach Delphi Win32 aus :D Und dann folgende Info:
|
Re: Durch Zufall zweite Form öffnen
Delphi-Quellcode:
wie xZise schon gesagt hat:
procedure TForm1.Panel1Click(Sender: TObject);
var z1,z2,f1,f2,f3,f4,f5,f6:integer; begin if (checkbox1.checked=true) //warum (checkbox1.checked=true)? es reicht checkbox1.checked and (checkbox2.checked=false) // hier auch einfach not checkbox1.checked and (checkbox3.checked=false) and (checkbox4.checked=false) and (checkbox6.checked=false) and (checkbox8.checked=false) and (checkbox9.checked=false) and (checkbox5.checked=true) and (checkbox7.checked=true) then randomize; // was bringt das? einfach randomize in OnCreate, das reicht for z1 := 1 to 3 do f1:=(random(4)); // warum 3 mal immer neue zufallszahlen generieren? edit1.text:=IntToStr(f1); if edit1.text='0' then form2.show; if edit1.text='1' then form2.show; if edit1.text='2' then form2.show; (checkbox1.checked=true) // if ?!? and (checkbox2.checked=false) and (checkbox3.checked=false) and (checkbox4.checked=false) and (checkbox6.checked=false) and (checkbox8.checked=false) and (checkbox9.checked=false) and (checkbox5.checked=true) and (checkbox7.checked=true) then form1.Hide; // semikolon ?!? else showmessage('FEHLER SIND NOCH VORHANDEN');
Delphi-Quellcode:
var N: Byte;
// N := Random(4); case N of 0:Form2.show; 1:Form3.show; 2:Form4.show; 3:Form5.show; end; |
Re: Durch Zufall zweite Form öffnen
Hey du bist echt ein riesen grosser Schatz....
doch leider habe wir immer noch ein Problem und zwar... um genau zu sein bastelln wir gerade an einem Rätsel. Es ist so aufgebaut, dass auf jedem Form-Blatt ein Fragebogen zu sehen ist, wenn man alle Fragen richtig beantwortet hat soll sich ein neues Form-Blatt öffnen. Damit die Sache ein bisschen kniffliger und nicht so langweilig wird, versuchen wir vergebungslos (müssen schon am Montag präsentieren), dass die Form-Blätter nicht einfach hintereinander gezeigt werden, sondern die zufällig hintereinander kommen. Ich glaube unsere frage ist auch nicht so verständlich. Aber wir hätten noch eine, wie kann man eine Verbindung zwischen zwei verschiedenen Form-Blättern erstellen, also z.B. wenn wir eine Zahl in ein edit.text in "Form 2" eingebe und eine weitere in ein edit.text in "Form 3", diese beiden Zahlen addiert werden und in ein weiteres Edit-Pfeld in "Form4" ausgegeben werden. Trotzdem wollen wir uns herzlich bei dir bedanken für die Hilfe die die uns bis jetzt gegeben hasst. mit lieben Grüssen Lena und Mieke |
Re: Durch Zufall zweite Form öffnen
Zitat:
um die Daten / Werte aus verschiedenen Units (also Forms) zu verbinden, müsst ihr sie in die uses-Anweisung einbinden (so wie die Units der Forms heißen) dann greift ihr so untereinander darauf zu:
Delphi-Quellcode:
Damit könntet ihr aus Form1 den Wert des Textfeldes mit dem aus Form2 zusammenaddieren
var
Gesamtwert: integer; [...] { dann irgendwo das aufrufen } Gesamtwert:= strtoint(Form1.edText.Text) + strtoint(Form2.edText.Text); und den Gesamtwert ausgeben oder was auch immer. Gruß Pfoto Edit: inttostr nach strtoint geändert |
Re: Durch Zufall zweite Form öffnen
Zitat:
|
Re: Durch Zufall zweite Form öffnen
VIELEN DAN`K AN ALLE, dass ist wirklich der Hammer. Wir hätten nieeee gedacht, dass wir so schnell antworten auf unsere Frage bekommen.
Xsize, was sind den Arrays? |
Re: Durch Zufall zweite Form öffnen
Delphi-Quellcode:
Ein Array ist eine Anreihung von Felder gleichen Typs.
FragenArray: Array [0...8] of String;
Ein Feld des Arrays kann mit dem Index angesprochen werden.
Delphi-Quellcode:
Grüße
FragenArray[0]:='Was ....';
Edit1.Text:=FragenArray[0]; Klaus |
Re: Durch Zufall zweite Form öffnen
Also mir wurden Array als "Hochhaus" erklärt ;)
Und in jeder Etage gibt es Eintrag dessen Typ man deklarieren kann... z.B. "string" oder "Integer". Dann gibt es zwei verschiedene Typen. Einmal ein "dynamisches Array" und dann ein "statisches Array". Wie der Name sagt, kann man im dynamischen Array die "Höhe des Hochhauses" ständig bestimmen. Beim Statischen hingegen ist sie immer gleich und wird während du programmierst festgelegt. Der Zugriff erfolgt mit [X], wobei "X" die "Etage" ist. Bei dynamischen Array ist es von "0" bis "Länge" - 1. Bei statischen Arrays kann man den Bereich selber festlegen. (Wobei es sich empfiehlt auch hier von 0 an zu arbeiten, da man dann immer weis, was das erste Item ist ;) ) Die Deklarierung erfolgt mit <Name des Arrays> : array of <Datentyp jedes arrayitems> (dynamisch) oder <Name des Arrays> : array [<Von>..<Bis>] of <Datentyp jedes arrayitems> (statisch). Außerdem kann man die auch "mehrdimensional" machen, aber ich denke das es hier noch nicht zwingend notwendig ist. Und nun zu deiner Frage: (An alle die Konstanten kennen: Da ich davon ausgehen muss, dass "Goldstart" Konstanten nicht kennt, erspare ich es erstmal, und mach es "dynamisch" ;) Wer lust hat kann ja die Konstanten erklären ^^) Zuerst musst du mehere Arrays deklarieren. In den einen steht die Frage und in den anderen (außer eins) stehen die Antworten. (Ich nehme hier: 3 Antworten ;)) Und im letzten steht, wo die richtige Antwort steht ;)
Delphi-Quellcode:
Jetzt muss du beim erstellen der Frageform die Arrays belegen:
questions : array [0..7] of string;
answer1 : array [0..7] of string; answer2 : array [0..7] of string; answer3 : array [0..7] of string; correct : array [0..7] of Integer;
Delphi-Quellcode:
Und jetzt kannst du die einzelenen Fragen "abfragen":
questions[0] := 'Wie lange dauert eine Woche (in Stunden)';
answer1[0] := '24'; answer2[0] := '168'; answer3[0] := '170'; correct[0] := 2; ... questions[7] := 'Was ist der Hauptbestandteil der Erde'; answer1[7] := 'Stickstoff'; answer2[7] := 'Kohlenstoff'; answer3[7] := 'Sauerstoff'; correct[7] := 3;
Delphi-Quellcode:
Und dann überprüfst du, wenn einer der Button geklickt wurde, ob es der richtige war:
Label.Caption := questions[<Nummer der Frage>]
AnswerButton1.Caption := answer1[<Nummer der Frage>] AnswerButton2.Caption := answer2[<Nummer der Frage>] AnswerButton3.Caption := answer3[<Nummer der Frage>]
Delphi-Quellcode:
if ClickedButton = correct[<Nummer der Frage>] then
Showmessage('Richtig!') else Showmessage('Falsch :(') |
Re: Durch Zufall zweite Form öffnen
Ich würde daraus lieber ein Record machen, und dann ein Array of MyRec
so umgefähr, ich weiss halt nicht ob das nicht zu "hoch" ist, und euer lehrer dann denkt das das nicht euer Prog ist
Delphi-Quellcode:
so würde ich es machen, ich hatte für sowas mir mal nen Objekt gebaut, der Fragen und antworten Verwaltet, aber ich glaube das glaubt euch euer lehrer nicht. Und zudem ist es nicht 100 %ig ausgereift, da ich es nur einmal gebraucht habe... type TFrage = record Frage : String; richtigeAntwort : Integer; Anwort : array[0..3] of String; end; TFragen = array[0..6] of TFrage; Gruss Thorben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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