Sure, that's definitly possible about changing the values. I'll write out some code after I get home in a bit.
I don't have any experience with using XML to store the data, but that shouldn't be too hard to do. I would recommend reading the data from the XML when the window opens and store it in an array relating to the email address of the contact. Store all the changes in memory until the window is destroyed to save disk operations.
Hopefully you have enumerated the ComboBox with an ItemData, otherwise you will have no way to link each value
JScript code:
/*some global vars */
var currentContact = 0;
var aContacts = Array[];
var aContactData = Array[];
function On[i]WindowId[/i]Event_ComboSelChanged (Wnd, ControlId) {
newContact = Wnd.Combo_GetItemData(ControlId, Wnd.Combo_GetCurSel(ControlId));
aContactData[curentContact] = Wnd.GetControlText([i]EditBoxControl[/i])
Wnd.SetControlText([i]EditBoxControl[/i], aContactData[newContact]);
currentContact = newContact;
}
when the window with the controls are created, the 2 arrays aContacts and aContactData should be populated with this: the key value of the arrays should just be integers, the exact valuses aren't really important. The values to fill in on aContacts should be the email addresses, and aContactData the values of the EditBox. once the window is destroyed (OK button or whatever) write out the values the user recorded back to the XML file using a for loop
JScript code:
for (var i =1; i<aContacts.Size; i++)
// use aContacts[i] and aContactData[i] to write out the array data
// make sure to remove the data from the array when the window is destroyed from any method: OK, Cancel, X in corner or otherwise
WDZ, fix GeSHi to allow BBCode