Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi if-Konstrukionen bei checkboxen (https://www.delphipraxis.net/128811-if-konstrukionen-bei-checkboxen.html)

AlexanderBrade 6. Feb 2009 15:41


if-Konstrukionen bei checkboxen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich schreibe an einem Programm für die Berechnung des Abitur-Durchschnittes.
In einem Formluar bietet es die Möglichkeit die Wahlpflichtfächer auszuwählen(sonstige wie Musik, Ethik, usw., die in der Regel frei nach Wahl belegt werden können).
Dazu habe ich 13 checkboxen für die Wahl erstellt. Der Anwender hat die Möglichkeit eine oder zwei dieser auszuwählen.
Bei meinem Problem handelt es sich um die visuelle Darstellung, dieser getätigten Auswahl. Diese soll nach einem Klick auf den "weiter" Button in folgendem Formular in zwei Panels erfolgen. Das Problem ist, dass ich nicht 20 if-Konstrukionen aufmachen will um alle Möglichkeiten zu erfassen!
Ein Beispiel: Jemand wählt Rechtskunde, das laut meiner Programmierung als Wahl in das erste Panel geschrieben wird. Außerdem wählt er Latein, das ins 2. geschrieben wird, da ich das standardisiert so festgelegt habe. Wenn die zweite Wahl allerdings Wirtschaft sein sollte, bei dem auch das 1. festgeschrieben ist überschreiben sich beide Fächer und das 2. Panel bleibt leer, obwohl zwei Fächer gewählt wurden, usw.

Vielleicht hat jemand einen Lösungsansatz bzw. Programmieransatz mit dem so etwas besser lösbar wäre als mit if-Konstruktionen.
Vielen Dank im voraus.

Im Anhang ein Screeenshot des Formulars mit den vielen checkboxen.

quendolineDD 6. Feb 2009 15:53

Re: if-Konstrukionen bei checkboxen
 
Gebe einfach den CheckBoxen eine gemeinsame OnClick-Methode und dazu einem Zähler. Bei Click wird der Zähler inkrementiert. Ist der Zähler kleiner 2, wird in das entsprechende Label der Caption der CheckBox geschrieben. Und Fertig.

Das kann dann zB so aussehen:

Delphi-Quellcode:
procedure TForm1.SetLabel(Sender: TObject);
begin
  if (Sender as TCheckBox).Checked then
    if (i < 2) then
    begin
      case i of
        1 : Form2.Label1.Caption := (Sender as TCheckBox).Caption;
        2 : Form2.Label2.Caption := (Sender as TCheckBox).Caption;
      end;
    end;
end;

mkinzler 6. Feb 2009 15:54

Re: if-Konstrukionen bei checkboxen
 
-Reagiere bei Änderung und trage gleich in der Folgeseite ein
-.FindControl
-Referenzen in Array ablegen

AlexanderBrade 6. Feb 2009 16:06

Re: if-Konstrukionen bei checkboxen
 
So wie das quendolineDD beschrieben hat haut das aber noch nicht hin, oder fehlt da noch etwas ???
P.S. Ich bin nicht so firm, dass ich mit allem was mkinzer schreibt etwas anfangen kann.

DeddyH 6. Feb 2009 16:08

Re: if-Konstrukionen bei checkboxen
 
[OT]
Zitat:

Zitat von AlexanderBrade
...dass ich mit allem was mkinzer schreibt etwas anfangen kann.

Damit stehst Du nicht allein da :mrgreen:[/OT]

AlexanderBrade 6. Feb 2009 16:19

Re: if-Konstrukionen bei checkboxen
 
Kann denn das was quendolineDD geschrieben hat klappen oder sollte ich mich auf diesen Pfad erst gernicht begeben?

DeddyH 6. Feb 2009 16:23

Re: if-Konstrukionen bei checkboxen
 
Kann ich Dir im Moment leider nicht beantworten, da ich Deine Problembeschreibung ehrlich gesagt noch nicht ganz verstanden habe :oops:

AlexanderBrade 6. Feb 2009 16:33

Re: if-Konstrukionen bei checkboxen
 
Naja das Problem ist das Überschreiben: wie erreiche ich, dass das erste Fach was man anklickt ins 1. Panel sofort übertragen wird und das zweite dann ins 2. Panel(direkt beim Anklicken/Ändern)???

DeddyH 6. Feb 2009 16:38

Re: if-Konstrukionen bei checkboxen
 
Tut mir leid, ich bin heute etwas begriffsstutzig. Die Checkboxen liegen auf Panels gruppiert, richtig? Was soll denn nun genau passieren, wenn eine davon angeklickt wird bzw. was ist Dein definiertes Ziel?

AlexanderBrade 6. Feb 2009 16:41

Re: if-Konstrukionen bei checkboxen
 
Also die checkboxen tragen eine caption, die in die panels des nächsen formulars übertragen werden soll.
Wenn die erste angeklickt wird, soll deren caption gleich übertragen werden. Wird die zweite ageklickt(max. Anzahl) soll das in das zweite Panel.

quendolineDD 6. Feb 2009 16:44

Re: if-Konstrukionen bei checkboxen
 
Ups, dann hab ich deine Frage total falsch verstanden ...
Dann ändere meinen Quelltext einfach von Label zu Panel und fertig.

Musst ihn natürlich noch deinen Bedürfnissen anpassen. Soll dir bloß als Richtungsweißer dienen.

DeddyH 6. Feb 2009 16:46

Re: if-Konstrukionen bei checkboxen
 
Ist das zweite Formular zu dem Zeitpunkt bereits sichtbar? Wenn nicht, würde ich die Informationen erst beim Anzeigen desselben auswerten.

shmia 6. Feb 2009 16:56

Re: if-Konstrukionen bei checkboxen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also die ganze Auswahl geht doch mit CheckListBoxen viel einfacher!!
Das System läuft so:

1.) Benutzer muss seine Pflichtfächer wählen.
2.) Es kann leicht verhindert werden, dass er nicht mehr Fächer als erlaubt wählt. (z.B. maximal 2)
3.) Unzulässige Pflichtfächerkombinationen werden verhindert *)
4.) Dann werden alle Wahlfächer ausgeblendet, die er eh schon als Pflichtfach hat.
5.) die Anzahl der Wahlfächer wird ebenfalls limitiert

*) man könnte überlegen, ob man vielleicht 3 Checklistboxen anbietet (1. PF, 2.PF und WF)

AlexanderBrade 6. Feb 2009 17:06

Re: if-Konstrukionen bei checkboxen
 
Ja, aber damit habe ich noch nie gearbeitet ud weiß demzufolge auch nicht wie die programmierabläufe aussehen!

Und übrigens klappt alles andere, es soll nur die Darstellung ohne ein Überschreiben möglich sein!

AlexanderBrade 6. Feb 2009 17:10

Re: if-Konstrukionen bei checkboxen
 
Delphi-Quellcode:
if (Sender as TCheckBox).Checked then
    if (iii < 2) then
    begin
      case iii of
        1 : Form5.panel12.Caption := (Sender as TCheckBox).Caption;
        2 : Form5.panel13.Caption := (Sender as TCheckBox).Caption;
      end;
    end;
Was ist hier eigentlich iii und warum < 2, ich glaube ich versteh da was noch nicht ganz!

mimi 6. Feb 2009 17:20

Re: if-Konstrukionen bei checkboxen
 
Wenn ich dich richtig verstanden habe hast du Probleme damit mehrer Fächer in den Panel anzuzeigen ? Weil du Wahrscheinlich den Caption direkt setzt oder ?
Also sowas:
Panel1.Caption:=Checkbox1 ?

Also am einfachsten ist folgende Lösung:
(Wenn ich dich richtig verstanden habe)
Alle Checkboxen haben den gleichen OnClick Event.
Delphi-Quellcode:
  Panel1.Caption:=Panel1.Caption+TCheckbox(Sender).Caption
hast du sowas gemeint ?

AlexanderBrade 6. Feb 2009 17:53

Re: if-Konstrukionen bei checkboxen
 
Also vielen Dank quendolineDD.
Nachdem ich das gaze ewas umgeschrieben hatte funktionierte es.


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