I think I understand what you are saying. But I do not want to add another element to my schema for binding to the expression box solely for printing a value. Think of an enumeration. I have an element named Status which is an int type (1,2,3,4). Sometimes the print value (Select..., Approve, Deny, Change). In other places I want to print (No Action, Approved, Denied, Changed) or (No Action, Changed, Denied). It is contextual to the state of the form.
So, if I did what you are suggesting, I would bind the Expression Box to the Status field in my main data source. But the problem is the expression box would print an int, not a string? Another option would force me to create another element (a Status Display element) in my main schema which would be set when the Status element changes. Problem is I really did not want to have to add an element that would have to be passed around in my InfoPath workflow just so I can print a value. I believe that is what you are suggesting, if that is my only option, I will sallow the medicine. Do not want to give the perception that I have to add elements and data into my main data source to enable the InfoPath GUI to display calculated values.
I am trying to find a paradigm in InfoPath which is similar to a label control in .NET Winforms.
To answer your question, the values would be dynamically loaded when the status changes. So I would use the AfterChange event since the other events lock the DOM. Plus I would like to only print the status if the value was committed to the DOM.
Jason
http://www.k2distillery.com/