Autor Beitrag
Fredy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Do 08.01.09 21:27 
Hallo Liebe Leute,

Gruppe A / 4 Personen = 20 Minuten: 895,00 €
= 30 Minuten: 1.250,00 €


/ 6 Personen = 20 Minuten: 1.150,00 €
= 30 Minuten: 1.590,00 €


/ 12 Personen = 20 Minuten: 2.400,00 €
= 30 Minuten: 3.100,00 €
= Komplett: 6.900,00 €

Ich hab gerade ein riesen Problem in meinem Delphie Projekt mit Checkboxen.
Ich hab es so aufgebaut Gruppe A kann man über eine checkbox auswählen wenn man zu dieser Gruppe gehört.
Wenn man diese Checkbox gechecked hat dann folgt die nächste wo man die Personen auswählt wie viel sie waren.
Dadrauf folgen dann zwei oder auch drei checkboxen bei denen man die Minuten oder Komplett auswählt.
So weit so gut aber jetzt soll nur ein Betrage in eine Variable Namens Euro eingetragen werde.

Nehmen wir mal an ich bin in Gruppe A und wir waren 4 Personen und wir haben 20 Minuten gebraucht. Dann soll in der variable Euro der Betrag 895 € stehen.

Natürlich könnte man alles so machen IF GruppeA.checked and 4 Personen.checked and 20 Minuten-checked aber das wäre ja sehr aufwendig.

Gibt es da noch eine andere Lösung ?

aso es wäre noch zu erwähnen das es checkboxen bleiben sollten =)

Vielen Vielen Dank
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 08.01.09 22:05 
CheckBoxen sind da zwar sehr abenteuerlich, aber wenn es so sein muss und keine sinnvollere Variante möglich ist...

Gibt es denn eine Berechnung für die Zahlen oder sind die willkürlich festgelegt? Bei ersterem könnte man diese Berechnung dann benutzen, bei letzterem könnte man ein konstantes mehrdimensionales Array verwenden, in dem die Werte fest drin stehen.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Do 08.01.09 22:14 
Die Eurobeträge sind fix von unserem Lehrer vorgegeben worden.
Sie liegen auch keiner Berechnung zu Grunde.
Wie würde es den ca. mit einem Array aussehen ? / ich weis so groß wie man ein Array macht aber zu dieser Aufgabe kann ich da kein Bezug herstellen.
Oder ich steht gerade auf dem Schlauch.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 08.01.09 22:45 
Du kannst die Beträge konstant einfügen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
const
  EuroValues: array[1..21..4of Currency = (
    // Gruppe 1:
    (100300400500),
    // Gruppe 2
    (150350500600)
    );
jetzt kannst du auf die Beträge mit EuroValues[1][4] für Gruppe 1 und 4 Personen zugreifen. Welcher Arrayeintrag zu welcher CheckBox gehört kannst du ja in Tag schreiben und dann z.B. beim Auswählen speichern.

Ein Beispiel liegt im Anhang. Das ist alles keine schöne Vorgehensweise und ziemlich sinnfrei, weil CheckBoxes da einfach nicht passend sind, aber wenn du die benutzen musst, dann ist das noch die kürzeste Variante.
Einloggen, um Attachments anzusehen!
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Do 08.01.09 23:24 
Zitat:
EuroValues: array[1..7, 1..2] of Currency = (
// Gruppe 1:
(895, 1250),
// Gruppe 2
(1150, 1590)
// Gruppe 3
(2400, 3100)
// Gruppe 4
(950, 1430)
// Gruppe 5
(1240, 1750)
// Gruppe 6
(750, 1300)
// Gruppe 7
(1400, 1990)
);


Würde das dann mit 7 Gruppen ( in meinem Fall die Personen) und 1..2 ( in meinem Fall die Minuten ) so aussehen ? (irgendwie funktioniert dies nicht)
Bleiben dann die anderen Befehle in den Checkboxen gleich ?
Muss ich dann den Befehl von der "1 Person" Checkbox ( bei dir) auf alle anderen übertragen ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 08.01.09 23:27 
Du hast ja drei Gruppen von CheckBoxen irgendwie, also brauchst du auch ein dreifach geschachteltes Array, nicht nur ein zweifaches wie im Beispiel. Gruppe, Personenanzahl, Minuten.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Do 08.01.09 23:40 
habs mal ein Ausschnitt eingescanned ohne meine Vereinfachung. Wenn ich das richtig sehe dann muss ich das so machen oder?
Ich steig momentan nicht ganz dahinter. :idea: ohne das Komplette das lass ich mal weg sonst wird es noch komplizierter ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
EuroValues: array[1..31..71..2of Currency = (
// Gruppe 1:
(8951250),
// Gruppe 2
(11501590)
// Gruppe 3
(24003100)
// Gruppe 4
(9501430)
// Gruppe 5
(12401750)
// Gruppe 6
(7501300)
// Gruppe 7
(14001990)
);


Moderiert von user profile iconNarses: Bild als Anhang hochgeladen
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 08.01.09 23:53 
Und das sollt ihr mit CheckBoxen machen? :shock:

Da gibts ja vermutlich noch einige Möglichkeiten mehr, oder? Und du benutzt jetzt so viele CheckBoxen ganz rechts wie in der Liste zu sehen? Also 7 + 4 + 4 = 13 ganz rechts? Und 23 insgesamt für den Ausschnitt?
Weil wenn du das so machst, dann kannst du auch einfach in die Tag-Eigenschaft dieser rechten CheckBoxen den Betrag schreiben und den direkt verwenden.

Das Array wäre sinnvoll, wenn du nach der Auswahl der ersten CheckBox für den Tanz entsprechend die nächsten einblendest. Aber mir ist eben gerade eingefallen, dass du das vielleicht gar nicht so machst. Als ich nämlich gesehen habe, dass die Optionen weiter rechts auch noch unterschiedlich sind (Paare, Personen, ...).

Trotz allem sind CheckBoxen dafür nicht gedacht und es macht alles unnötig kompliziert. Aber für die verkorkste Aufgabenstellung kannst du ja nix. :nixweiss: Bin ich froh, dass unsere Lehrerin wusste wofür welche Komponenten gedacht sind. :lol:
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 00:03 
Waren einige Checkboxen ;)

in der Aufgabenstellung steht Checkboxen und hab auch einiges dadrauf angepasst aber okay.
Was würdest du den Vorschlag was ich verwenden soll ? / dann lern ich wenigstens wie es richtig gemacht wird und hab ein Programm das Funktioniert.
Tarry
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.01.09 00:15 
user profile iconFredy hat folgendes geschrieben Zum zitierten Posting springen:
Waren einige Checkboxen ;)

in der Aufgabenstellung steht Checkboxen und hab auch einiges dadrauf angepasst aber okay.
Was würdest du den Vorschlag was ich verwenden soll ? / dann lern ich wenigstens wie es richtig gemacht wird und hab ein Programm das Funktioniert.



Hi,
ich haette wahrscheinlich RadioButtons, fuer die Gruppen und ne RadioGroup fuer die Personen benutzt.
Dann kannst du einfach mit RadioGroup1.ItemIndex herausfinden, wieviele Personen ausgewaehlt wurden.

Gruss,
Thomas

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein


Zuletzt bearbeitet von Tarry am Fr 09.01.09 00:15, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.01.09 00:15 
Ich würde eigentlich zumindest RadioButtons verwenden, denn man darf ja wohl nicht mehrere Tänze, etc. auswählen. ;-)
Das wäre immer noch nahe an der Aufgabenstellung, du müsstest dich aber nicht darum kümmern, dass nur ein Eintrag ausgewählt ist.

Da das aber in der Aufgabenstellung explizit mit CheckBoxen steht, solltest du es wohl lieber damit machen, vielleicht

Ich habe da auch eine Idee. Und zwar:
Ein Array, in dem die Optionen mit deren Namen und den Werten stehen, dann kannst du die CheckBoxen dementsprechend ein- und ausblenden wie Optionen vorhanden sind.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 00:30 
am besten wäre es schon mit den Checkboxen dann müsste ich den Rest der auf die Checkboxen zugreif nicht ändern.
@ jaenicke ich komm gerade nicht mit wie du (ich hoffe das "du" geht in Ordnung) die Idee verwirklichen willst ? 7 bzw. wie die Ausführung funktionieren soll.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.01.09 01:24 
Ganz fertig ist das nicht, da fehlt noch der vorletzte Schritt und die restlichen Optionen.

Das versuch erstmal nachzuvollziehen. Wenn du etwas nicht verstehst, dann frag. Wenn du verstanden hast, was da passiert, dann müsstest du den Rest ergänzen können. ;-)

user profile iconFredy hat folgendes geschrieben Zum zitierten Posting springen:
ich hoffe das "du" geht in Ordnung
Natürlich ;-)
Einloggen, um Attachments anzusehen!
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 19:59 
Ich mach das Programm erst mal mit den if's dass dies funktioniert danach probier ich dann deine lösung aus.
Versteh einige Sachen nicht ganz.
Meine Fragen stell ich dir dann.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 21:53 
Neues Problem ich habe die Variable Kosten, in ein StringGrid einlesen lassen das funktioniert auch, nur zeigt er mir wenn ich 4 Personen (frmTanz.rb_4.Checked) und 20 Minuten (frmTanz.cb_20M.Checked) auswähle, nicht die 895 an sondern die 1990 von der letzten Zeile.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
// Zu den gewählten Kosten den entsprechenden Wert eintragen.
 IF frmTanz.rb_4.Checked = true and frmTanz.cb_20M.Checked = true then Kosten :=895;
 IF frmTanz.rb_4.Checked = true and frmTanz.cb_30M.Checked = true then Kosten :=1250;
 IF frmTanz.rb_6.Checked = true and frmTanz.cb_20M.Checked = true then Kosten :=1150;
 IF frmTanz.rb_6.Checked = true and frmTanz.cb_30M.Checked = true then Kosten :=1590;
 IF frmTanz.rb_12.Checked = true and frmTanz.cb_20M.Checked = true then Kosten :=2400;
 IF frmTanz.rb_12.Checked = true and frmTanz.cb_30M.Checked = true then Kosten :=3100;
 IF frmTanz.rb_12.Checked = true and frmTanz.cb_KAP.Checked = true then Kosten :=6900;
 IF frmTanz.rb_3P.Checked = true and frmTanz.cb_1A.Checked = true then Kosten :=950;
 IF frmTanz.rb_3P.Checked = true and frmTanz.cb_2A.Checked = true then Kosten :=1430;
 IF frmTanz.rb_5P.Checked = true and frmTanz.cb_1A.Checked = true then Kosten :=1240;
 IF frmTanz.rb_5P.Checked = true and frmTanz.cb_2A.Checked = true then Kosten :=1750;
 IF frmTanz.rb_12a.Checked = true and frmTanz.cb_1A.Checked = true then Kosten :=750;
 IF frmTanz.rb_12a.Checked = true and frmTanz.cb_2A.Checked = true then Kosten :=1300;
 IF frmTanz.rb_20a.Checked = true and frmTanz.cb_1A.Checked = true then Kosten :=1400;
 IF frmTanz.rb_20a.Checked = true and frmTanz.cb_2A.Checked = true then Kosten :=1990;


Kann doch eigentlich nicht sein oder mach ich was falsch in dem Teil der Programmierung ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.01.09 22:00 
Vielleicht sind die auch noch ausgewählt? (Ob die CheckBoxen unsichtbar sind spielt dabei ja keine Rolle.)

Ein großer Fehler ist jedenfalls das = true überall. Was Delphi jetzt macht ist das:
ausblenden Delphi-Quelltext
1:
IF ((frmTanz.rb_4.Checked = true) and frmTanz.cb_20M.Checked) = true then Kosten := 895;					
Was du aber willst ist ja
ausblenden Delphi-Quelltext
1:
IF frmTanz.rb_4.Checked and frmTanz.cb_20M.Checked then Kosten := 895;					
Mehr dazu findest du auch hier:
www.delphi-treff.de/...olean-werten/page/4/

Zudem solltest du else benutzen. Dann werden die anderen Optionen gar nicht mehr durchlaufen.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 22:05 
das = true war die Lösung überall weg und schon funktionierts Danke ;)
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 22:45 
Könnte mir jemand sagen was ich hier (frmMenu.Label3Click;) noch vervolständigen muss das er mir den OnClick "Befehl" ausführt von einem anderen Label aus ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.01.09 22:47 
Den Parameter angeben, also entweder den anderen Label oder Sender. Label3Click(Sender) z.B.

Aber wenn du nur diesen OnClick-Aufruf in dem OnClick hast, kannst du auch direkt Label3Click bei mehreren Labeln als OnClick zuweisen.
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Fr 09.01.09 23:48 
Funktioniert Super / du weist ganz schön viel. :roll: :zustimm:

noch eine Frage ;) Ich hoffe ich nerv nicht zu sehr-

Wenn ich dies habe wie kann ich da noch die funktion einbauen wenn man No drückt ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if MessageDlg('Sie möchten die Tanzgruppe für '
   + FormatFloat('#,##0.00 €', Gesamtsumme)
   + ' bestellen ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
  frmTanz.Hide;
  frmRechnung.Show;
end;
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.