Forum: PC-Programmierung VB6 Textbox - Auswahl?


von Dirk (Gast)


Lesenswert?

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

von Tobias L. (acidtobi)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

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

von Tobias L. (acidtobi)


Lesenswert?

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

von der mechatroniker (Gast)


Lesenswert?

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.

von der mechatroniker (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.