Idee für Umsetzung gesucht

Dorschty

Erfahrenes Mitglied
Hallo Leute,

hab ein Problem! Und zwar schreibe ich ein Programm mit Visual Studio in C++. Ich habe eine GUI, in der man einiges Auswählen kann!
Ich habe jetzt 9 Tabellen. Anhand der Eingabe in der GUI muss ich entscheiden, welche Tabelle ich nehmen muss! In der Tabelle an sich muss ich nur feste werte auslesen.
Hat jemand von euch eine Idee, wie man das am elegantesten macht? Mit if, else if usw. sieht das sehr bescheiden aus! ;-)
Wäre für jede Idee und für jeden Tipp dankbar!

Grüße
Dorschty
 
Hab mir den Thread gerade nochmal selbst duchgelesen...:)
Ist klar, was ich meine Absicht ist oder soll ich versuchen es näher zu erklären? :)

Gruß
Dorschty
 
Hi,

wonach willst du genau unterscheiden, was zu tun ist? Wenn verschiedene Fälle der Eingabe (z.B. in einer Textbox) unterschiedlich behandelt werden müssen, dann sind if-then-else oder evtl. auch switch-case schon die richtigen Ansätze. Aber vielleicht kann man da ja auch noch etwas optimieren, Redundanzen beseitigen, auslagern, usw.

Zeig am besten mal deinen Code.

Grüße, D.
 
Ich habe auf meiner GUI mehrere Checkboxen, anhand von denen ich unterscheiden muss!
Also, wenn eine Checkbox in Verbindung mit einer anderen.
Meine GUI hat folgende Checkboxen:
Single
Double
Multiple

Normal
Tight
Reduced

für jede Kombination dieser Checkboxen gibt es eine andere Tabelle, aus der ich einen Wert bekommen muss.

Ich habe das ganze mal mit if Anweisungen gelöst, das sieht dann so aus:
(ist jetzt nur für die Kombination Single und Normal)
Code:
if(chk_box_single->Checked)
{
         if(chk_box_normal->Checked)
	{
		if(code_letter == "A")
		{
			sample_size = 5;
		}
		else if(code_letter == "B")
		{
			sample_size = 5;
		}
		else if(code_letter == "C")
		{
			sample_size = 5;
		}
		else if(code_letter == "D")
		{
			sample_size = 5;
		}
		else if(code_letter == "E")
		{
			sample_size = 20;
		}
		else if(code_letter == "F")
		{
			sample_size = 20;
		}
		else if(code_letter == "G")
		{
			sample_size = 32;
		}
		else if(code_letter == "H")
		{
			sample_size = 50;
		}
	         else if(code_letter == "J")
		{
			sample_size = 80;
		}
	}
}
 
Hi,

du kannst doch innerhalb einer einzigen Bedingung mehrere Teilbedingungen logisch miteinander verknüpfen. Damit würdest du dir schonmal eine ganze Menge Schreibarbeit sparen, da du dich ansonsten ständig wiederholst. Und die Klammern kannst du bei einer einzigen Anweisungen in der Verzweigung auch weg lassen.

C:
if(chk_box_single->Checked && chk_box_normal->Checked)
{
    if(code_letter == "A" || code_letter == "B" || code_letter == "C" || code_letter == "D")
        sample_size = 5;
    else if(code_letter = "E" || ...
}

Grüße, D.
 
Das ist schonmal ein guter Tipp, danke! Bin ich garnicht drauf gekommen...:-(
Aber das ist irgendwie auch nicht die schönste Lösung!
Hatte schon mit dem Gedanken gespielt, mir ein Array anzulegen, das die Inhalte der Tabelle beinhaltet und das das Array durchzusuchen! Weiß aber leider nocht nicht genau, wie ich das machen könnte!

Gruß
Dorschty
 
Hallo,

also ich würde es so in etwa machen:
Du hast eine Maske auf der was ausgewählt wird. Sobald der Benutzer auf z.B. Ok-Button drückt,
werden deine Benutzereingaben in einer Nachricht / Kontext / Objekt oder wie du das auch nennen willst gespeichert.
Dieser Context wird dann von der UI zu einem Service weiter gereicht.
Der Service kapselt die Geschäftslogik, die den Context auswertet und von entsprechenden DAO's(Data Access Objekts) sich die Tabellen hollt.
Diese werden dann an die UI weiter gereicht.
Das Auswerten von dem Context könnte so aussehen:
Du hast eine Liste mit 3 Auswahlmöglichkeiten (A,B,C) und eine Liste mit 2 Auswahlmöglichkeiten (1,2) auf deiner GUI.
je nach Kombination A1,A2,B1,B2,C1,C3 soll eine andere Tabelle angezeigt werden.
Dein Service enthält eine Hashtable mit den Kombinationsmöglichkeiten: A1,A2,B1,B2,C1,C3 als Schlüssel und den DAO's als Werte.
Das heißt, wenn der Benutzer A und 1 auswählt und das an den Service schickt, greift der Service mit der Kombination A1 oder 1A in das Hashtable und hollt sich das DAO.
Dann braucht der Service nur die DAO Methode z.B. GetBubuTable aufzurufen und die Bubutable wird dann hoch (zur UI) gereicht.



Gruß Konstantin
 
Hey, das hört sich doch recht gut an!
Ich glaube so Ähnlich werd ichs machen! :)
Vielen Dank euch beiden, für eure Hilfe und eure Tipps!

Gruß
Dorschty
 
CheckBox müsste glaube ne Eigenschaft Tag haben, dort einfach für die einzelnen sample_size (oder irgendein Objekt) setzen.
Und beim CheckedChanged Event über den Sender CheckBox ermitteln und Tag auslesen.

P.S.: wären RadioButtons nicht besser?
 
Hm... hab das jetzt nochmal überdacht und will es jetzt mit RadioButtons machen!
Mein Problem liegt aber darin, das ich mehrere Gruppen von Radio Buttons habe!
Wenn ich einfach so alle Radio Buttons auf die Form ziehe, kann ich ja nur eins auswählen, aber ich muss auf meiner Form 3 Sachen auswählen können!
Kann man bei RadioButtons "Gruppen" bilden, also das rad_btn1 und rad_btn2 zB. eine Gruppe sind und ich darin auswählen kann und rad_btn3 und rad_btn4 sind dann eine andere Gruppe, bei der ich auch eins auswählen kann.

Wäre für jede Hilfe dankbar

Grüße
Dorschty
 

Neue Beiträge

Zurück