![]() |
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 |
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 |
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:
im Hauptformular summierst Du dann, im simpelsten Falle, die Punkt der einzelnen Formulare.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;
Delphi-Quellcode:
Gruß vom Ferber :wink:
Punkte:=Form1.Punkte + Form2.Punkte + ....
|
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 |
Re: checkbox abfrage aus mehreren units
Zitat:
also
Delphi-Quellcode:
Moin
X : Integer;
|
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