How to change the background color on a form field?

Q: How to change the background color on a form field?

A:

To modify background color on an existing form field you can modify
‘BG’ property in ‘MK’ dictionary as follows:

// C# pseudocode is along the following lines…

void ChangeBackground(Field fld, int red, int green, int blue)
{
Obj field_dict = fld.GetSDFObj(); // Get SDF/Cos dictionary

Obj mk = field_dict.FindObj(“MK”); // Get MK entry from the field dictionary.
if (mk == null) mk = field_dict.CreateDict(“MK”);
Obj color_arr = mk.CreateArray(“BG”);
color_arr.PushBackNumber(red/255.0));
color_arr.PushBackNumber(green/255.0));
color_arr.PushBackNumber(blue/255.0));
fld.RefreshAppearance();
}

Objective-C variant would be …

PTFieldIterator * itr = [doc GetFieldIterator];
for (; [itr HasNext]; [itr Next])
{
PTField *f = [itr Current];
PTObj *field_dict = [f GetSDFObj]; // Get SDF/Cos dictionary
PTObj *mk_dict; // Get MK entry from the field dictionary.
PTDictIterator *itr2 = [field_dict Find:@“MK”];
if ([itr2 HasNext]) {
mk_dict = [itr2 Value];
} else {
mk_dict = [field_dict PutDict:@“MK”];
}
float red = 200.0, green = 20.0, blue = 20.0;
PTObj *color_arr = [mk_dict PutArray:@“BG”];
[color_arr PushBackNumber:(red/255.0)];
[color_arr PushBackNumber:(green/255.0)];
[color_arr PushBackNumber:(blue/255.0)];
}