Entwickler-Ecke

Sonstiges (Delphi) - Brauche Hilfe bei Programm


Rob-Pha - Do 07.11.13 16:42
Titel: Brauche Hilfe bei Programm
Hallo, ich bin Schüler an nem Gymnasium und soll jetzt in der 12. Klasse ein Spiel/Programm programmieren.
Meine Idee:
So etwas wie ein Ökologisches Verhalten,
man bekommt ca. 8 Fragen gestellt jede Frage ergibt einen Wert bsp. Wie oft fahren sie Auto in der Woche?
Antwort Möglichkeiten : 1x, 2x,3x,4x,5x oder mehr -> Diese antworten sollen auf einem Radiobutton beantwortet werden, die Antwort ergibt einen bestimmten Wert welcher immer mit der nächsten Frage bzw. deren Antwort addiert oder subtrahiert(es soll auch Fragen geben bei dem man -Werte auf die Endrechnung bekommt wie zum bsp. wie oft nutzen sie das Fahrrad? je nach Antwort 1-5x die Woche wird dann der Wert vom Endergebnis abgezogen weil es ja Ökologisch ist.) wird.
So nun wäre das anisch ja nicht schwer denn man könnte ja alles auf einer Seite machen ,aaaaaber meine Lehrerin möchte das ich den Spaß, also jede Frage auf einer eigenen Seite beantworte, bedeutet dass nach dem anklicken eines Buttons für bsp.weise "weiter" zur nächsten Seite komme. Da ist nun mein Problem wie bekomme ich es hin das diese Seiten alle miteinander rechnen können? denn auf der letzten Seite hätte ich gerne das es ein Ergebnis auf einem Label oder Panel ausspuckt das je nach Kategorie dem Benutzer sagt wie sein verhalten ist. Das lässt sich ja dann optisch auf Panels lösen.

Ich hoffe das es halbwegs verständlich ist was ich hier will.

Mit freundlichen Grüßen


baumina - Do 07.11.13 16:46

Du könntest ein TPageControl verwenden und immer nur das aktuelle TabSheet anzeigen.


Rob-Pha - Do 07.11.13 17:11

ok davon habe ich noch nix gehört damit muss ich mich erstma auseinandersetzen


baumina - Do 07.11.13 17:16

Mit einer TPageControl und der darauf liegenden TTabSheets hast du mehrere Registerkarten. Setzt Du in der TPageControl die TabHeight auf 0, werden die Reiter nicht mehr angezeigt. Den Weiter-Button und den Zurück-Button legst du ausserhalb von der TPageControl. Wird Weiter gedrückt, erhöhst du den ActivePageIndex der TPageControl um 1, beim Zurück -1. Innerhalb eines TTabSheets kannst du dann die jeweilige Frage und deren Radiobuttons legen. Auf dem letzten TabSheet kommt dann die Auswertung.

Dadurch merkt der Benutzer nichtmal dass er Registerkarten hätte.


WasWeißDennIch - Do 07.11.13 17:48

Statt mit TabHeight regele ich so etwas über TabVisible des TabSheets, aber jeder so, wie er mag.


Rob-Pha - Fr 15.11.13 09:01

Hallo, Danke erstml für die Antwort ich werde mich jetzt mal mit den Sachen auseinander setzen, kann mir jemand eventuellnen tutorial empfehlen? Grüße


baumina - Fr 15.11.13 09:06

Ein Tutorial kenne ich jetzt keins, aber evtl. hilft dir das hier weiter http://delphi.about.com/od/delphitips2007/qt/hidepagectrltab.htm


Rob-Pha - Fr 15.11.13 09:55

Hallo, Danke für die Seite, also ich hab gerade Unterricht und meine Lehrerin meint ich muss auch schauen wie ich die Variable welche zum Ende des Programms den End wert errechnet, deklairere ( Global muss es sein ,
aber mein größtes Problem ist erstmal die Verarbeitung des Wertes welcher der RadioButton gibt ( bsp. heißt die 1. Frage wie oft nutzen sie Ihr Auto, der Nutzer hat per Radiobuton die antwort möglichkeiten von 1-6 x die Woche)
wie bekomme ich es hin das dieser Wert Addiert wird, denn ziel des Programmes ist es ja am Ende einen Gesamtwert zu bekommen welcher die Aussage über das ökologische Verhalten gibt. Ich bin mit den Tpagecontrol nocht nicht ganz durchgestiegen,wie realisiere ich denn das diese mit den Werten umgehen kann?


baumina - Fr 15.11.13 10:04

Also du machst ein Formular und definierst darin eine globale Variable, so z.B.:


Delphi-Quelltext
1:
2:
3:
4:
5:
type TfmFragen = class(TForm)
{....}
  private
    Punktzahl : Integer;
  end;


Auf die globale Variable Punktzahl kannst du jetzt überall innerhalb von TfmFragen zugreifen (auf 0 setzen, erhöhen, zum Schluss anzeigen).

Was die Komponente TPageControl geht, musst einfach mal die Komponente auf dein Formular setzen, rechts klicken, neue Seite anklicken und bisserl rumspielen (auf jede der Registerkarten mal ein TLabel legen), das verstehst du sicher dann schon.


Lemmy - Fr 15.11.13 11:24

user profile iconbaumina hat folgendes geschrieben Zum zitierten Posting springen:



Delphi-Quelltext
1:
2:
3:
4:
5:
type TfmFragen = class(TForm)
{....}
  private
    Punktzahl : Integer;
  end;



ähm... Einspruch... das ist das totale Gegenteil einer globalen Variable....

eine globale Variable ist wie der Namen schon sagt, global in einer Unit bekannt bzw. im Projekt sobald die unit in der uses steht, also so was:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
interface
..

var
  Punktanzahl: Integer;

...
implementation


jaenicke - Fr 15.11.13 11:27

Um genau zu sein handelt es sich im Formular um ein privates Feld der Klasse TfmFragen.


baumina - Fr 15.11.13 11:32

Unglücklich ausgedrückt, sorry, ich streiche das Wort "global", ich habe es ja schon alleine durch die Aussage "innerhalb des Formulars" widerlegt. Trotzdem wäre eine Variable innerhalb der Formular-Klasse für die Anforderung eine gute Lösung.


baumina - Fr 15.11.13 11:34

user profile iconbaumina hat folgendes geschrieben Zum zitierten Posting springen:
Also du machst ein Formular und definierst darin eine globale Variable, so z.B.:


Delphi-Quelltext
1:
2:
3:
4:
5:
type TfmFragen = class(TForm)
{....}
  private
    Punktzahl : Integer;
  end;


Auf die globale Variable Punktzahl kannst du jetzt überall innerhalb von TfmFragen zugreifen (auf 0 setzen, erhöhen, zum Schluss anzeigen).

Was die Komponente TPageControl geht, musst einfach mal die Komponente auf dein Formular setzen, rechts klicken, neue Seite anklicken und bisserl rumspielen (auf jede der Registerkarten mal ein TLabel legen), das verstehst du sicher dann schon.


Lemmy - Fr 15.11.13 11:42

user profile iconbaumina hat folgendes geschrieben Zum zitierten Posting springen:
Unglücklich ausgedrückt, sorry, ich streiche das Wort "global", ich habe es ja schon alleine durch die Aussage "innerhalb des Formulars" widerlegt. Trotzdem wäre eine Variable innerhalb der Formular-Klasse für die Anforderung eine gute Lösung.


keine Frage - für den Zweck so spontan gesagt auch die deutliche bessere Lösung...