FieldCust_AddDefect

The user-defined function FieldCust_AddDefect calls the function SetFieldApp.

The function first sets all fields to be invisible, not required, and to appear on page 100 at location 0. This ensures that if you add a new field using the Project Entities link on the Project Customization window, the layout will not be changed.

Add a call to FieldCust_AddDefect in the Bug_New event procedure so that it will be triggered when a user adds a new defect:

Sub Bug_New
        FieldCust_AddDefect
End Sub

First, the code handles the fields that are common to all user groups. It uses conditional statements for the fields that will appear in the dialog box only for specific user groups, or that will have different properties for different users.

Sub FieldCust_AddDefect
        On Error Resume Next
	 ' Initialize the fields of the defect 
        For i= 0 To Bug_Fields.Count -1
            SetFieldApp Bug_Fields.FieldByID(i).FieldName, _
	     False, False, 100, 0
        Next
        ViewNum = 0
        PageNum = 0
    	' Set fields that are in common for all user groups 
        SetFieldApp "BG_BUG_ID", True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_DESCRIPTION", True, False, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_SUMMARY", True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_DETECTED_BY", True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_DETECTION_DATE", _
	 True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_DETECTION_VERSION", True, True, PageNum, _
        ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_SEVERITY", True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_PRIORITY", True, True, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_PROJECT", True, False, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_REPRODUCIBLE", True, False, PageNum, ViewNum
        ViewNum = ViewNum + 1
        SetFieldApp "BG_STATUS", True, False, PageNum, ViewNum
        ViewNum = ViewNum + 1
	 ' Set fields that are different for different user groups. 
	 ' Since one user can belong to multiple user groups, 
	 ' or none of these groups, there is no need for an Else statement.
        If User.IsInGroup("Developer") Then
            SetFieldApp "BG_PLANNED_CLOSING_VERSION", True, False, _
            PageNum, ViewNum
            ViewNum = ViewNum + 1
            SetFieldApp "BG_PLANNED_FIX_TIME", True, False, PageNum, _
            ViewNum
            ViewNum = ViewNum + 1
        End If
    
        If User.IsInGroup("QATester") Then
            PageNum = PageNum + 1
            SetFieldApp "BG_USER_01", True, False, PageNum, ViewNum
            ViewNum = ViewNum + 1
            SetFieldApp "BG_USER_02", True, False, PageNum, ViewNum
            ViewNum = ViewNum + 1
        End If
    
        SetFieldApp "BG_ACTUAL_FIX_TIME", True, False, PageNum, _
        ViewNum
        ViewNum = ViewNum + 1
	 ' ...
        PrintError "FieldCust_AddDefect"
        On Error GoTo 0
End Sub