Making Froms/Field Display Only on the fly

 8 Replies
 0 Subscribed to this topic
 12 Subscribed to this forum
Sort:
Author
Messages
Saurabh
Veteran Member
Posts: 94
Veteran Member
    Hi All
    I have a custom design studio form with a status field.

    Based on the status field value i would like to set the whole form to be "display only" or just certain key fields to be "Display Only".

    e.g if the Status is "Rejected" the user cannot make any changes in the fields, but if the Status is "Level1 Check" he is only allowed to make changes to certain non-key fields.

    Any other tips on how that can be achieved?

    One thought i had was to capture the Change event and then check for Status. If status "Rejected" then give a message and return false aborting the change.

    Thanks
    Saurabh

    David Williams
    Veteran Member
    Posts: 1127
    Veteran Member
      Saurabh - I would go with your 2nd solution. Use the OnBeforeTransaction function to check the status field (and Change event) and Return False if the user is trying to update fields you don't want them to update.
      David Williams
      Saurabh
      Veteran Member
      Posts: 94
      Veteran Member
        David
        I can see that working when i want to restrict certain fields.

        However when the status is "Rejected" i do not want the user to be able to change any field in that record.
        I have around 25 or so fields and would have to write codes to trap changes to each one of them.

        Was looking for a way to be able to put the whole form/tabregion as Display Only. Do you think that can be done?

        Thanks
        Saurabh
        David Williams
        Veteran Member
        Posts: 1127
        Veteran Member
          You don't have to put edit checks on every field iif you don't want to allow any updates from occuring. You simply check the status and if it's "Rejected" you alert("Sorry, no updates allowed on rejected records") and Return False.
          David Williams
          Saurabh
          Veteran Member
          Posts: 94
          Veteran Member
            Yep got it. I keep thinking in terms of trapping changes as I am moving through field etc.

            To summarise -
            I have trapped the Change Action and then
            if the status = "reject" then give an error
            if any other status then check the key fields and if they have been changed then give an error

            One last thing - the way i am comparing the old field values to new field values is by capturing the Old Field (define as a Global variable) value when user presses I,P or N and then comparing it with the new field value.
            Both in section -- FORM_OnBeforeTransaction

            is that the right way or is there another quicker way of comparing old and new (being changed to) field values

            Thanks
            Saurabh
            David Williams
            Veteran Member
            Posts: 1127
            Veteran Member
              The only other way I can think of is to do a DME call before updating records and then comparing them to the values in the fields. Either way would work but by using a DME you don't have to store the values - you just check them when needed.
              David Williams
              Saurabh
              Veteran Member
              Posts: 94
              Veteran Member
                Hmm I have never used a DME in my script before.
                Will give it a go and see how i get along.
                Thanks for the help
                Saurabh
                Saurabh
                Veteran Member
                Posts: 94
                Veteran Member
                  David
                  Once i give the error message, is there a way to force the "Inquire" Action so that the old record values are refreshed back or would be it easier just to have a message in the Alert which says "Click on Inquire after pressing OK"
                  thanks
                  Saurabh
                  David Williams
                  Veteran Member
                  Posts: 1127
                  Veteran Member
                    lawformDoFunction("I")
                    David Williams