Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bruchrechnen (https://www.delphipraxis.net/1002-bruchrechnen.html)

Maverick 6. Okt 2002 16:16


Bruchrechnen
 
also ich hab ein Problem:
Für die Schule will ich ein Programm machen das eine Art interaktiver Mathetest ist. Da in dem Test Brucgh aufgaben vor kommen stell ich diese mit bildern da und wollte das eigentlich so machen das bei jeder neuen aufgabe die alte unsichtbar wird und die neue erscheint nun hab ich aber das problem das aufgabe 3 nicht erscheint.

bei den aufgaben sind die lösungen schon vorgegeben damit ich mir es erspare die ganzen rechen formeln zu schreiben :D

hier mal der quelltext :
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, ComCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Ansicht1: TMenuItem;
    N1: TMenuItem;
    Beenden1: TMenuItem;
    Button1: TButton;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Meldungsfenster: TGroupBox;
    Label7: TLabel;
    Fragenkatalog: TGroupBox;
    Label1: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    info1: TMenuItem;
    Versionsnummer1: TMenuItem;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    aufgabe_1_dic: TRichEdit;
    aufgabe_2_dic: TRichEdit;
    Copyright: TLabel;
    aufgabe_1_im: TImage;
    loesung_4_im: TImage;
    loesung_1_im: TImage;
    loesung_3_im: TImage;
    loesung_2_im: TImage;
    RichEdit1: TRichEdit;
    aufgabe_2_im: TImage;
    loesung_2_c_im: TImage;
    loesung_2_a_im: TImage;
    loesung_2_d_im: TImage;
    loesung_2_b_im: TImage;
    procedure Beenden1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Versionsnummer1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zaehler_richtig, zaehler_falsch, Aufgabe_1_falsch, Aufgabe_1_richtig:integer;

implementation

{$R *.DFM}

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

if radiobutton1.checked=false then label7.caption:='Bitte zuerst eine Antwort auswählen!';
if radiobutton2.checked=false then label7.caption:='Bitte zuerst eine Antwort auswählen!';
if radiobutton3.checked=false then label7.caption:='Bitte zuerst eine Antwort auswählen!';
if radiobutton4.checked=false then label7.caption:='Bitte zuerst eine Antwort auswählen!';

/////////// F R A G E - 2 //////////////////////////////////////////////////////
// Keine Angaben - Meldung löschen //
if radiobutton1.checked=true then label7.caption:=' ';
if radiobutton2.checked=true then label7.caption:=' ';
if radiobutton3.checked=true then label7.caption:=' ';
if radiobutton4.checked=true then label7.caption:=' ';
// Ende des Vorganges //
//----------------------------------------------------------------------------//
// Fragenummer vergeben //
if radiobutton1.checked=true then label1.caption:='Frage - 1b';
if radiobutton2.checked=true then label1.caption:='Frage - 1b';
if radiobutton3.checked=true then label1.caption:='Frage - 1b';
if radiobutton4.checked=true then label1.caption:='Frage - 1b';

if radiobutton1.checked=true then aufgabe_2_im.visible:=true;
if radiobutton2.checked=true then aufgabe_2_im.visible:=true;
if radiobutton3.checked=true then aufgabe_2_im.visible:=true;
if radiobutton4.checked=true then aufgabe_2_im.visible:=true;

if radiobutton1.checked=true then loesung_2_a_im.visible:=true;
if radiobutton2.checked=true then loesung_2_a_im.visible:=true;
if radiobutton3.checked=true then loesung_2_a_im.visible:=true;
if radiobutton4.checked=true then loesung_2_a_im.visible:=true;

if radiobutton1.checked=true then loesung_2_b_im.visible:=true;
if radiobutton2.checked=true then loesung_2_b_im.visible:=true;
if radiobutton3.checked=true then loesung_2_b_im.visible:=true;
if radiobutton4.checked=true then loesung_2_b_im.visible:=true;

if radiobutton1.checked=true then loesung_2_c_im.visible:=true;
if radiobutton2.checked=true then loesung_2_c_im.visible:=true;
if radiobutton3.checked=true then loesung_2_c_im.visible:=true;
if radiobutton4.checked=true then loesung_2_c_im.visible:=true;

if radiobutton1.checked=true then loesung_2_d_im.visible:=true;
if radiobutton2.checked=true then loesung_2_d_im.visible:=true;
if radiobutton3.checked=true then loesung_2_d_im.visible:=true;
if radiobutton4.checked=true then loesung_2_d_im.visible:=true;
//----------------------------------------------------------------------------//
// Aufgabenbewertung //
if radiobutton1.checked=true then zaehler_falsch:=+1;
if radiobutton2.checked=true then zaehler_falsch:=+1;
if radiobutton3.checked=true then zaehler_falsch:=+1;
if radiobutton4.checked=true then zaehler_richtig:=+1;

if radiobutton1.checked=true then Aufgabe_1_falsch:=1;
if radiobutton2.checked=true then Aufgabe_1_falsch:=1;
if radiobutton3.checked=true then Aufgabe_1_falsch:=1;
if radiobutton4.checked=true then Aufgabe_1_richtig:=1;
// Ende des Vorganges //
//----------------------------------------------------------------------------//
// Den Aufgabentext ändern //
if radiobutton1.checked=true then aufgabe_2_dic.visible:=true;
if radiobutton2.checked=true then aufgabe_2_dic.visible:=true;
if radiobutton3.checked=true then aufgabe_2_dic.visible:=true;
if radiobutton4.checked=true then aufgabe_2_dic.visible:=true;
// Ende des Vorganges //
//----------------------------------------------------------------------------//
// Checkboxes entchecken //
if radiobutton1.checked=true then radiobutton1.checked:=false;
if radiobutton2.checked=true then radiobutton2.checked:=false;
if radiobutton3.checked=true then radiobutton3.checked:=false;
if radiobutton4.checked=true then radiobutton4.checked:=false;
// Ende des Vorganges //
//----------------------------------------------------------------------------//
end;


für aufgabe 3 hab ich einfach den quelltext von aufgabe 2 kopiert und statt 2 eine 3 überall hingeschrieben. das sind alles bilder mit den einzelnen lösungen und fragen, außer aufgabe_2_dic das ist ein richtext feld , ich arbeite übrigens mit Delphi 5 könnt ihr mir helfen???
Code&Titel geändert-FuckRacism

RomanK 6. Okt 2002 17:02

Ich hab deinen Code mal etwas vereinfacht!
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
// wenn eine Lösung eingegeben wurde
if (radiobutton1.checked) or (radiobutton2.checked) or (radiobutton3.checked) or (radiobutton4.checked)
then begin
label7.caption:=' ';
label1.caption:='Frage - 1b';
aufgabe_2_im.visible:=true;
loesung_2_a_im.visible:=true;
loesung_2_b_im.visible:=true;
loesung_2_c_im.visible:=true;
loesung_2_d_im.visible:=true;
aufgabe_2_dic.visible:=true;
end
else
//wenn nicht
label7.caption:='Bitte zuerst eine Antwort auswählen!';
//wars richtig ??
if (radiobutton1.checked) or (radiobutton2.checked) or (radiobutton3.checked)
 then zaehler_falsch:=+1;
if radiobutton4.checked then zaehler_richtig:=+1;

if (radiobutton1.checked) or (radiobutton2.checked) or (radiobutton3.checked)
then Aufgabe_1_falsch:=1;
if radiobutton4.checked=true then Aufgabe_1_richtig:=1;
//Radiobuttons entchecken
radiobutton1.checked:=false;
radiobutton2.checked:=false;
radiobutton3.checked:=false;
radiobutton4.checked:=false;
end;
PS: ich habe es ned geteste also ohne Gewähr.
PSS: Ich hab den Code nur anderst dargestellt, nicht die Funktion des Codes verändert!!!

Du willst doch zaehler_richtig erhöhen, oder ?? das geht aber mit +1 nicht!
Mach das entweder mit
Code:
zaehler_richtig:=zaehler_richtig+1;
oder
Code:
inc(zaehler_richtig);

Maverick 6. Okt 2002 17:11

thx ich bin nen programmier anfänger des wegen sieht des wohl so aus

RomanK 6. Okt 2002 17:22

HI
außerdem würde ich bei einer Neuen Frage nicht das Alte TImage verstecken und ein Neues anzeigen sodern in das Alte einfach per
image1.Picture.LoadFromFile(<<Dein Bild>>); ein Neues Bild einladen!

Maverick 6. Okt 2002 17:45

stimmt ist besser thx

Maverick 6. Okt 2002 17:49

jo dein quellcode funktioniert

Maverick 6. Okt 2002 18:29

ich hab wieder ein problem: du hast mir zwar den quellcode erheblich vereinfacht aber der will immer noch nicht aufgabe 3 anzeigen, die will ich auch in TImages anzeigen lassen, aber ich weiss neicht wie ich dem PC sagen soll das er mit dem selben button mit dem er aufgabe 2 aufgerufen hat auch aufgabe 3 auf rufen soll kannst du nmir helfen??

Daniel B 6. Okt 2002 18:34

Hi,

da Du mit dem Druck auf den gleichen Button unterschiedliche sachen machen möchtest, könntest Du eine globale Intergervariable Deklarieren und bei jeden Druck um +1 erhöhen.
Dann musst Du nur noch abfragen welchen Wert die Var hat und kannst so verschiedene sachen mit dem gleichen Button machen.

Grüsse, Daniel :hi:

Maverick 6. Okt 2002 18:40

Globale interwas??? kannst du mir das näher erklären wie man das macht?? bin anfänger in sachen programmieren

Daniel B 6. Okt 2002 18:49

Hi,

eine intergelaktische Variable!
Nein, ein globale Integer Variable.

Ganz oben vor dem Implementation steht ein var.
Da ist z.B. Form: TForm; aufgelistet.
Da drunter schreibst Du Deine Variable rein:

Nenn sie wie Du willst.

MyVar: Integer; //Das ist nun eine globale Integer Variable. Sprich im "ganzen" Porgramm bekannt.

Immer wenn Du den Button klickst, erhöhst Du diese Variable um 1.

MyVar := MyVar +1; //Also in der Proz. des Buttons

drunter kommt jetzt Dein normaler Code.
Jetzt brauchst Du nur noch abfragen welchen Wert die Var hat.

if MyVar = 1 then
begin
tue.dies := und.das
end
else if = 2 then
begin
tue.jetzt := was.anderes;
end
else if ..........

Soweit KLar?

Grüsse, Daniel :hi:

Maverick 6. Okt 2002 19:22

na mal guckern ob ich das pack thx

Maverick 6. Okt 2002 20:48

ich glaub ich brauche nochmal hilfe :D wie kann ich das einstellen das der nur die nächste aufgabe anzeigt wenn eine radio box markiert ist???

Daniel B 6. Okt 2002 20:56

Hi,

ich versteh dich nicht ganz.
Man kann immer nur eine RadioBox anklicken.
Aber egal.
Hier mal eine möglichkeit, aber ziemlich unhandlich.
Wenn Du eine anklickst, dann kannst Du in der Proz. prfüfen ob die anderen nicht gecheckt sind.
Hoffe das war das was Du suchtest, sonst musst Du es mir nochmal erklären, bin nciht so ganz sicher ob ich Dich verstanden habe.

Grüsse, Daniel :hi:

Maverick 7. Okt 2002 13:14

nein ich glaube nicht ganz also problem:

du hast mir ja schon gesagt wie ich mit einem button mehrere verschiedene sachen auf einmal ansteuern kann. wenn ich das nun mit der intergalaktischen variablen einbaue macht der das auch soweit, aber aber geht IMMER eine aufgabe weiter,wenn ich auf den button klick auch wenn keine radiobox makiert ist, ich will aber das er nur weiter geht wenn eine radiobox makiert ist

Christian Seehase 7. Okt 2002 14:13

Moin Maverick,

also nur mal so zum Verständnis:
Das typische an RadioButton ist, dass in einer Gruppe zusammengehöriger RadioButton immer genau einer markiert ist.
Niemals mehr, niemals keiner.
Ansonsten musst Du Checkboxen benutzen.

Das soll jetzt nicht heissen, dass das programmiertechnisch nicht anders lösbar wäre, aber das genannte Verhalten ist Sinn und Zweck von Radiobuttons, und sollte auch eingehalten werden.

RomanK 7. Okt 2002 15:42

das kannst du machen mit :

Code:
if (radiobutton1.checked) or (radiobutton2.checked) or (radiobutton3.checked) or (radiobutton4.checked) then
begin

>>> DeinCODE <<<
end
else //wein keiner gecheckt isch
begin
>>>> DEIN CODE <<<<
end;

Christian Seehase 7. Okt 2002 16:52

Moin Roman,

so kann man das natürlich machen, aber wenn es möglich ist, dass kein RadioButton markiert ist, dann wäre das Programm ein potentieller Kandidat für die "Interface Hall of Shame", denn die Radiobutton Gruppe würde nicht so funktionieren, wie sie eigentlich gedacht ist.
Das darf, vom Sinn einer Gruppe von Radiobutton her gesehen, nicht sein.
Dafür sind, wie schon gesagt, Checkboxen besser geeignet.

Daniel B 7. Okt 2002 16:57

Hi Christian,

vielleciht sollte er besser eine RadioGroup nehmen, dann merkt er es selbst und kommt gar nicht auf andere falsche Gedanken.

Grüsse, Daniel :hi:

Christian Seehase 7. Okt 2002 17:03

Moin Daniel B,

das ist noch nicht einmal nötig.
Alle Radiobutton, die sich innerhalb eines Containers befinden (z.B. Form, Panel), verhalten sich (zumindest die VCL Komponenten), automatisch korrekt. Man kann zwar vergessen einen vorzubelegen, aber sobald der erste den Fokus erhält, funktionieren die wie erwartet.

RomanK 7. Okt 2002 17:10

HI

Dann sollte er halt am anfang immer eine "Vormarkieren", damit beseitigt sich das Prob!
Allerdings finde ich es ned so gut wenn da dann schon eine Lösung vorgegeben ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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