-> Hier kostenlos registrieren
Hallo,
ich bastle gerade an einem Bildbaustein rum.
Dort habe ich unter anderem ein symbolisches EA-Feld mit Textliste hintendran welche von außen an den BB parametriert wird.
Als weitere Eigenschaft des BB wird ein UDT übergeben. Dieser beinhaltet ein Array 0-4 of DInt.
Nun möchte ich anhand des ausgewählten Eintrags des EA-Feld den Wert des passenden Arrayeintrags in einem weiteren EA-Feld anzeigen.
Bisher habe ich es wie folgt programmiert:
So muss ich aber alle Indizes manuell eingeben...
Also möche ich das ganze dynamisch halten und den SmartTag zusammensetzen.
Z.B. so:
Dies funktioniert aber nicht und ich habe keine Ahnung weshalb.
Theoretisch kann ich es ja wie in Version 1 machen, da wenn sich die Größe des Arrays im UDT ändert, ich auch den BB aktualisieren muss.
Aber mich interessiert wieso dies nicht funktioniert.
ich bastle gerade an einem Bildbaustein rum.
Dort habe ich unter anderem ein symbolisches EA-Feld mit Textliste hintendran welche von außen an den BB parametriert wird.
Als weitere Eigenschaft des BB wird ein UDT übergeben. Dieser beinhaltet ein Array 0-4 of DInt.
Nun möchte ich anhand des ausgewählten Eintrags des EA-Feld den Wert des passenden Arrayeintrags in einem weiteren EA-Feld anzeigen.
Bisher habe ich es wie folgt programmiert:
Code:
'Zum testen OK, für den Einsatz nicht geeignet, da eine feste Anzahl angegeben und Prorammiert werden muss
If SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex") = 0 Then
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[0]")
ElseIf SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex") = 1 Then
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[1]")
ElseIf SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex") = 2 Then
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[2]")
ElseIf SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex") = 3 Then
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[3]")
ElseIf SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex") = 4 Then
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[4]")
End If
So muss ich aber alle Indizes manuell eingeben...
Also möche ich das ganze dynamisch halten und den SmartTag zusammensetzen.
Z.B. so:
Code:
Dim test
test = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionsindex")
'diPosition ist eine Variable im BB (DInt), welche auf das Ausgabe-EA-Feld gelegt wird.
diPosition = SmartTags("Properties\UDT_Aktor.Motor_gesteuert.Positionen.Positionen.Position[" & test & "]")
Dies funktioniert aber nicht und ich habe keine Ahnung weshalb.
Theoretisch kann ich es ja wie in Version 1 machen, da wenn sich die Größe des Arrays im UDT ändert, ich auch den BB aktualisieren muss.
Aber mich interessiert wieso dies nicht funktioniert.