Hallo, ich habe 20 Textboxen und jede hate einen eigenen Namen, damit man sie im Programcode besser zuordnen kann. dann hab ich unter "Name".Tag einen index hinterlegt von 1 bis 20. diesen Tag-eintrag übergebe ich an ein temporäre Textbox, deren Textfeld beschrieben werden kann. Nun möchte ich eine Choose-Anweisung schreiben mit der ich, abhängig vom index, die Textfelder der anderen Textboxen einzeln beschreiben z.b. wenn Temp.Tag = 1 dann Name1.Text = Temp.Text wenn Temp.Tag = 3 dann NAme3.text = Temp.Text hab dazu folgendes programiert dim textfeld as string textfeld=Choose(Temp.Tag,"Name1.text", "Name2.Text","Name3.Text, ....,Name20.Text) textfeld=Temp.Text welche syntax muss man hier verwenden damit das funktioniert? bei der Choose anweisung wird immer der entsrechende string in die Variable textfeld geschrieben. dann soll aber die Variable textfeld nicht neu überschriebenwerden, wie das hierbei der fall ist, sonder in den im textfeld enthaltenen String-Pfad geschrieben werden. ich bräuchte quasi ne art Pointer Funktion. oder gibts eine bessere möglichkeit? ich möchte vermeiden das ganze über eine select case abfrage machen zumüssen, um programieraufwand zu sparen. Schon mal danke im Vorraus
Statt den Textboxen eigene Namen zu geben wäre es viel einfacher ein Array aus Textboxen zu verwenden, d.h. den gleichen Namen zu verwenden aber jeder Textbox einen eigenen Index-Wert. (Stichwort "Control Array") Dann reduziert sich das ganze auf "Textfeld(Temp.Tag).Text=Temp.Text", choose und select kannst du dir völlig sparen.
Ja das es so machbar ist ist mir klar, aber dann verliert man doch die übersicht im Programcode und sollte sich jemand später den code ansehen wollen, muss der erst mal die textfelder zuordnen um zu verstehen wie es funktioniert. oder wenn einzelne einträge bearbeitet werden müssen, dann muss auch erst mal geschaut werden, in welcher textbox das pasieren muss weil die eben keine eigennamen mehr haben. das wollte ich eigentlich vermeiden
Dann hast du als Alternative noch die Möglichkeit mit der Controls-Collection zu arbeiten: textfeld=Choose(Temp.Tag,"Name1","Name2","Name3",...,"Name20") Me.Controls(textfeld).Text=Temp.Text
Alternative: Eine Control Collection verwenden, und die Lesbarkeit des Codes beim Zugriff auf einzelne (bestimmte) Controls dadurch sicherstellen, daß du ein Enum mit sinnvollen definierst und statt mit Konstanten immer nur mit den Enumwerten in das Feld reingehst. Beispiel:
1 | Private Enum eMyTextFields |
2 | TF_Name = 1 |
3 | TF_Vorname = 2 |
4 | TF_Ort = 3 |
5 | End Enum |
Ein Zugriff in der Art
1 | If Feld(TF_Name) <> "Schmidt" Then |
2 | ... |
3 | End If |
ist dann zwar etwas mehr Tippaufwand, aber genauso lesbar wie die Variante mit den individuellen Namen.
Ups, ich seh gerade, der Thread war auch schon ne Leiche. Warum wird auch im PC-Unterforum so wenig gepostet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.