AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Durch Zufall zweite Form öffnen

Offene Frage von "Goldstart"
Ein Thema von Goldstart · begonnen am 27. Jan 2007 · letzter Beitrag vom 28. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Goldstart

Registriert seit: 13. Jan 2007
5 Beiträge
 
#1

Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 11:13
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:
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='0then form2.show;
if edit1.text='1then form2.show;
if edit1.text='2then 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');
Ich hoffe jemand könnte mir weiterhelfen.



Mit freundlichen Grüßen

Lena

[edit=SirThornberry]Delphi-Tags gesetzt und Sprache korrigiert (Schulprogrammierung ist kein .NET) - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 11:20
Programmierst du wirklich mit Delphi.Net?
Für mich sieht es nach Delphi Win32 aus

Und dann folgende Info:
  • Wenn du die Hauptform erstellst (OnCreate mal im OI nachgucken ) dann füre einmal Randomize aus (reicht normalerweise)
  • Wenn du nun auch einen Button drückst, dann erstelle eine Zufallszahl die von 0 bis 7 geht.
  • Jetzt überprüfst du mit case (wenn du es nicht kennst: Case) welche Zahl das ist
    • Bei 0 form 1 öffnen
    • Bei 1 Form 2 öffnen
    • ...
    • Bei 7 Form 8 öffnen
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 11:47
Delphi-Quellcode:
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='0then form2.show;
if edit1.text='1then form2.show;
if edit1.text='2then 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');
wie xZise schon gesagt hat:
Delphi-Quellcode:
var N: Byte;
//
N := Random(4);
case N of
  0:Form2.show;
  1:Form3.show;
  2:Form4.show;
  3:Form5.show;
end;
Dominik
  Mit Zitat antworten Zitat
Goldstart

Registriert seit: 13. Jan 2007
5 Beiträge
 
#4

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 13:53
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
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 14:11
Zitat:
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.
Hi!

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:
var
  Gesamtwert: integer;

[...]
{ dann irgendwo das aufrufen }
Gesamtwert:= strtoint(Form1.edText.Text) + strtoint(Form2.edText.Text);
Damit könntet ihr aus Form1 den Wert des Textfeldes mit dem aus Form2 zusammenaddieren
und den Gesamtwert ausgeben oder was auch immer.


Gruß
Pfoto

Edit: inttostr nach strtoint geändert
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 14:24
Zitat von Goldstart:
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
Wäre es da nicht einfacher ein Array zu haben, mit Fragen und Antworten und die dann abzuspielen?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Goldstart

Registriert seit: 13. Jan 2007
5 Beiträge
 
#7

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 15:28
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?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.756 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Durch Zufall zweite Form öffnen

  Alt 27. Jan 2007, 16:11
FragenArray: Array [0...8] of String; Ein Array ist eine Anreihung von Felder gleichen Typs.
Ein Feld des Arrays kann mit dem Index angesprochen werden.

Delphi-Quellcode:
FragenArray[0]:='Was ....';

Edit1.Text:=FragenArray[0];
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Durch Zufall zweite Form öffnen

  Alt 28. Jan 2007, 11:13
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:
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;
Jetzt muss du beim erstellen der Frageform die Arrays belegen:
Delphi-Quellcode:
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;
Und jetzt kannst du die einzelenen Fragen "abfragen":
Delphi-Quellcode:
Label.Caption := questions[<Nummer der Frage>]
AnswerButton1.Caption := answer1[<Nummer der Frage>]
AnswerButton2.Caption := answer2[<Nummer der Frage>]
AnswerButton3.Caption := answer3[<Nummer der Frage>]
Und dann überprüfst du, wenn einer der Button geklickt wurde, ob es der richtige war:
Delphi-Quellcode:
if ClickedButton = correct[<Nummer der Frage>] then
  Showmessage('Richtig!')
else
  Showmessage('Falsch :(')
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Durch Zufall zweite Form öffnen

  Alt 28. Jan 2007, 13:21
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:

type
  TFrage = record
    Frage : String;
    richtigeAntwort : Integer;
    Anwort : array[0..3] of String;
  end;

   
  TFragen = array[0..6] of TFrage;
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...

Gruss Thorben
Thorben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz