Steuerelementefelder und Module

Liebe Wissenden kürzlich gab es diesen Thread zum Thema:
Auslagern von Funktionen und Subs eines UserControls in Module.
Eine Antwort lautete wie nachfolgend:
http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…

Ich fand diese Sache sehr nützlich und habe versucht, ein ganzes
textfeld-Array auf diese Weise zu übergeben.
Das funktionierte jedoch nicht :frowning:, ich erhielt die Fehlermeldung:
„Indexangabe für Objektdatenfeld erforderlich (Fehler 344)“
Verstanden habe ich sie nicht wirklich.
Weiß jemand von Euch, wie ich o.g. Beispiel mit ControlArrays realisieren kann in VB 6?

Vielen Dank für Eure Überlegungen,
Karotier

Hallo,

„Indexangabe für Objektdatenfeld erforderlich (Fehler 344)“

Wenn Du aus Text ein Steuerelementefeld machst, hast Du anschließend die Steuerelemente Text(n). Die Meldung kommt, wenn Du (n) weg läßt.
‚n‘ muß einen Wert enthalten, der einem vohandenen Element entspricht.

Gruß, Rainer

Hallo Rainer,
Dank für Deine Erläuterung.
Wie muss ich die Übergabe eines Steuerlementefeldes mit 3 Textboxen an eine Prozedur formulieren? Ich bekomm es einfach nicht hin.

Herzliche Grüße,
Karotier

Liebe Experten,

„Indexangabe für Objektdatenfeld erforderlich (Fehler 344)“

Wenn Du aus Text ein Steuerelementefeld machst, hast Du
anschließend die Steuerelemente Text(n). Die Meldung kommt,
wenn Du (n) weg läßt.
‚n‘ muß einen Wert enthalten, der einem vohandenen Element

folgendes habe ich ausprobiert:

Public Sub showField(feld() As Control, Index As Integer)
For Index = 0 To feld.ubound
feld(Index).Text = "hello"
End Sub

Private Sub Text1\_Click(Index As Integer)
showField Text1(), Index
End Sub

Das Formular enthält ein Steuerelementefeld mit 2 Textboxen.
Die Fehlermeldung lautet:„unverträglicher Typ, Datenfeld oder Benutzerdefinierter Typ erwartet“

Was ist falsch in meinen Anweisungen, wer kann mir sagen, wie es
richtig ist?

LG, Karotier

Hallo Karotier,

Deinen Code habe ich nicht verstanden, ich denke aber, ich weiß was Du machen wolltest.

Auf der Form:
Text1(0); Text1(1); Command1

Option Explicit
Private Sub Command1\_Click()
 Dim i As Integer
 For i = 0 To 1
 gt Text1(i)
 Next
End Sub

Im Modul:

Option Explicit

Public Sub gt(c As Control)
 c.Text = "Hallo"
End Sub

Du klickst auf den Button und anschließend steht ‚Hallo‘ in beiden Textfeldern.

War’s das? Oder habe ich wieder mal etwas falsch verstanden?

Gruß, Rainer

1 Like

Hallo

wie es Rainer so schoen schrieb , erhöhe einfach die Zahl der Schleifenaufrufe :smile:

Hallo Karotier,

Deinen Code habe ich nicht verstanden, ich denke aber, ich weiß was Du machen wolltest.

Auf der Form:
Text1(0); Text1(1); Command1


Option Explicit
Private Sub Command1\_Click()
 Dim i As Integer
 For i = 0 To 2 ' Anzahl der textboxen -1, da sie bei 0 beginnen
 gt Text1(i)
 Next
End Sub

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rainer,
Leider war es das nicht.
Ich möchte das gesamte Textbox-array an eine prozedur übergeben. Mit allen Eigenschaften. Was Deine Sub macht , ist Text in die einzelnen Elemente des Textbox-Array zu schreiben…
Also es geht um die Übergabe eines ganzen Steuerelement-Arrays an eine Sub. Wie muss das formuliert werden?

Danke für jede Anregung,
Kartier

Hallo Kartier,

sorry, das weiß ich nicht. Ich kann Dir da leider nicht helfen.

Gruß, Rainer

Hallo Rainer,
es hat ein Weilchen gedauert - aber jetzt habe ich verstanden.
Ja. DAS (s.u.) trägt die Lösung für mein Problem in sich, ich musste mich nur erst von meiner viel zu komplizierten Denkweise lösen.
Herzlichen Dank und *

Gruß,
Karotier

Deinen Code habe ich nicht verstanden, ich denke aber, ich
weiß was Du machen wolltest.

Auf der Form:
Text1(0); Text1(1); Command1

Option Explicit
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 1
gt Text1(i)
Next
End Sub

Im Modul:

Option Explicit

Public Sub gt(c As Control)
c.Text = „Hallo“
End Sub

Du klickst auf den Button und anschließend steht ‚Hallo‘ in
beiden Textfeldern.

War’s das? Oder habe ich wieder mal etwas falsch verstanden?

Gruß, Rainer