Solved! Go to Solution.
Option Explicit
Sub PopulateForm()
Dim objForm, objPage, objControl
Set objForm = Application.Map.Layers(Application.UserProperties("LayerName")).Forms("EDITFORM")
Set objPage = objForm.Pages("PAGE1")
Set objControl = objPage.Controls
If objControl.Item("Subtype").value = "1" Then
objControl.Item("IDfield1").Enabled = True
objControl.Item("IDfield1").Value = ""
objControl.Item("IDfield2").Enabled = False
objControl.Item("IDfield2").Value = "N/A"
objControl.Item("IDfield3").Enabled = False
objControl.Item("IDfield3").Value = "N/A"
ElseIf objControl.Item("Subtype").value = "2" Then
objControl.Item("IDfield1").Enabled = True
objControl.Item("IDfield1").Value = ""
objControl.Item("IDfield2").Enabled = True
objControl.Item("IDfield2").Value = ""
objControl.Item("IDfield3").Enabled = False
objControl.Item("IDfield3").Value = "N/A"
ElseIf objControl.Item("Subtype").value = "3" Then
objControl.Item("IDfield1").Enabled = False
objControl.Item("IDfield1").Value = "N/A"
objControl.Item("IDfield2").Enabled = False
objControl.Item("IDfield2").Value = "N/A"
objControl.Item("IDfield3").Enabled = True
objControl.Item("IDfield3").Value = ""
ElseIf objControl.Item("Subtype").value = "4" Then
objControl.Item("IDfield1").Enabled = False
objControl.Item("IDfield1").Value = "N/A"
objControl.Item("IDfield2").Enabled = False
objControl.Item("IDfield2").Value = "N/A"
objControl.Item("IDfield3").Enabled = False
objControl.Item("IDfield3").Value = "N/A"
End If
'Free objects
Set objControl = Nothing
Set objPage = Nothing
Set objForm = Nothing
End Sub
' Define public value for Layer Name
Application.UserProperties("LayerName") = "CurrentLayerName"
' Call PopulateForm() in applet
Application.Applets("AppletName").Execute("PopulateForm")
Option Explicit
'The purpose of this script is to enable the appropriate ID/NUMBER fields [ASMIS_ID, FEATURE_NUMBER, TRACKING_NUMBER]
'when a given subtype [Site, Feature, IO, Other] is selected, and to hide those ID/NUMBER fields that do not apply with the value "N/A".
'Create a subroutine to be able to pass any feature layer name to the script
Sub PopulateForm()
'Create and define Form, Page, and Control
Dim objForm, objPage, objControl
Set objForm = Application.Map.Layers(Application.UserProperties("LayerName")).Forms("EDITFORM")
Set objPage = objForm.Pages("DataEntry")
Set objControl = objPage.Controls
'If lblSUBTYPE field value is Site, do the following:
If objControl.Item("lblSUBTYPE").value = "Site" Then
'Enable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = True
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
'If lblSUBTYPE field value is Feature, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = "Feature" Then
'Enable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = True
'Enable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = True
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
'If lblSUBTYPE field value is IO, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = "IO" Then
'Disable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = False
'and set value of txtASMIS_ID field to "N/A"
objControl.Item("txtASMIS_ID").Value = "N/A"
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Enable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = True
'If lblSUBTYPE field value is Other, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = "Other" Then
'Disable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = False
'and set value of txtASMIS_ID field to "N/A"
objControl.Item("txtASMIS_ID").Value = "N/A"
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
End If
'Free objects
Set objControl = Nothing
Set objPage = Nothing
Set objForm = Nothing
End Sub
'for your line feature "Line" = name of the layer
Application.UserProperties("LayerName") = "Line"
'If lblSUBTYPE field value is Site, do the following:
If objControl.Item("lblSUBTYPE").Value = 1 Then
'Enable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = True
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
'If lblSUBTYPE field value is Feature, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = 2 Then
'Enable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = True
'Enable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = True
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
'If lblSUBTYPE field value is IO, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = 3 Then
'Disable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = False
'and set value of txtASMIS_ID field to "N/A"
objControl.Item("txtASMIS_ID").Value = "N/A"
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Enable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = True
'If lblSUBTYPE field value is Other, do the following:
ElseIf objControl.Item("lblSUBTYPE").value = 4 Then
'Disable txtASMIS_ID field
objControl.Item("txtASMIS_ID").Enabled = False
'and set value of txtASMIS_ID field to "N/A"
objControl.Item("txtASMIS_ID").Value = "N/A"
'Disable txtFEATURE_NUMBER field
objControl.Item("txtFEATURE_NUMBER").Enabled = False
'and set value of txtFEATURE_NUMBER field to "N/A"
objControl.Item("txtFEATURE_NUMBER").Value = "N/A"
'Disable txtTRACKING_NUMBER field
objControl.Item("txtTRACKING_NUMBER").Enabled = False
'and set value of txtTRACKING_NUMBER field to "N/A"
objControl.Item("txtTRACKING_NUMBER").Value = "N/A"
End If