Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi checkbox abfrage aus mehreren units (https://www.delphipraxis.net/86780-checkbox-abfrage-aus-mehreren-units.html)

hiroprotagonist 19. Feb 2007 16:55


checkbox abfrage aus mehreren units
 
Hallo,

ich bin noch Schüler ;) und da kommt nun ein kleines Abschlusprojekt auf mich zu.
der einfacheit halber, ein "psychotest".
das ganze ist zur zeit so gebaut das auf jeder Seite etwa 5 Fragen sind, jeweils mit einer Checkbox zum ankreuzen.
jetzt ist das Problem.
pro antwort soll eine Punktzahl gemerkt werden, (ok schaff ich )
aber wie mach ich das dann ?
soll ich die pro unit in einer .ini speichern lassen dann am Ende wieder zu Untegers umwandeln und zusammenrechnen oder geht das noch besser ?
weil mit der .ini wäre das Problem, wenn jemand "zurück" klickt und was ändert wird die .ini dann einfach überschrieben ?

mfg

phil

AndersBk 19. Feb 2007 17:33

Re: checkbox abfrage aus mehreren units
 
Hi Phil,

ich gehe mal davon aus, dass deine Checkbox-"Fragebögen" alle auf Formularen stehen, die zum selben Projekt gehören.
Ich würde folgendes probieren:

Irgendwo global, am besten im Hauptformular, ein array[1..n] of integer deklarieren, wobei n die Zahl der Fragebögen ist. Sobald der Benutzer einen Fragebogen ausgefüllt und mit "OK" bestätigt hat, wird die dort erreichte Punktzahl bestimmt und in das Array geschrieben. Ein Klick auf "Zurück" macht dann auch nichts, weil man die alte Punktzahl in dem Array überschreiben kann.
Am Ende die Punktzahlen in dem Array summieren.

Eine externe Datei (file of integer) halte ich nur für nötig, wenn du das Ergebnis dauerhaft speichern willst.

Gruß Birk :-D

Ferber 19. Feb 2007 18:01

Re: checkbox abfrage aus mehreren units
 
Du berechnest die Punktezahl vermutlich mit viel Programmieraufwand.
Die Eigenschaft TAG erscheint mir hier sehr hilfreich. (kann auch negativ sein)
Auf die Punktezahl greifst Du dann "von aussen" mit einer Eigenschaft zu.

hier ein Codeschnipsel
Delphi-Quellcode:
 
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    ...........
    CheckBox_n: TCheckBox;
  private
    function GetPunkte: integer;
  public
    property Punkte:integer read GetPunkte;
  end;

var
  Form1: TForm1;

implementation

function TForm1.GetPunkte: integer;
var i:Integer;
begin
  Result:=0;
  for i:=0 to ComponentCount-1 do
    if Components[i] is TCheckbox then
      if TCheckbox(Components[i]).Checked then
         inc(Result, TCheckbox(Components[i]).Tag);
end;
im Hauptformular summierst Du dann, im simpelsten Falle, die Punkt der einzelnen Formulare.

Delphi-Quellcode:
  Punkte:=Form1.Punkte + Form2.Punkte + ....
Gruß vom Ferber :wink:

Gehstock 19. Feb 2007 18:05

Re: checkbox abfrage aus mehreren units
 
Würde Auf dem Hauptformular nen globalen Integerwert setzen und den dann bei den einzelnen Formularen immer erhöhen


also auf der hauptform
x:Integer; //bei Public

x:=0;

dann alle anderen Units(die mit den Fragen ) in Uses
bei den jerweiligen Forms muss die Hauptform in Uses



und bei Frage1 z.B. x:=x+(erreichte Punkte)

und bei der auswertung dann halt
LabelErgebnis:=inttostr(x)
u.s.w.

Das alles natürlich nur unter der Vorraussetzung das ich Dich richtig verstanden hab

stifflersmom 19. Feb 2007 18:08

Re: checkbox abfrage aus mehreren units
 
Zitat:

Zitat von Gehstock
also auf der hauptform
x:string; //bei Public

x:=0;

Für dieses Vorhaben muss Dein X allerings nicht als String, sondern als Integer deklariert sein

also

Delphi-Quellcode:
X : Integer;
Moin

Gehstock 19. Feb 2007 18:09

Re: checkbox abfrage aus mehreren units
 
Hatte ich schon Gemerkt //wie Peinlich


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