Compile Function SRP_Set_Property(CtrlList, PropList, ValueList, AuxList, Window, AllPropsPerCtrl, Delim)

************************************************************************************************
*
* This program is proprietary and is not to be used by or disclosed to others, nor is it to
* be copied without written permission from SRP Computer Solutions, Inc.
*
* Name       :  SRP_Set_Property
*
* Description:  Sets controls properties if one of three ways:
*				- 1 to 1:		Sets one property to a single control
*				- 1 to Many:	Sets multiple properties for each control
*				- Many to 1:	Sets the same property for multiple controls
*
* Parameters:
*	CtrlList		[in] -- The list of controls whose property(s) are to be set
*	PropList		[in] -- The list of properties
*	ValueList		[in] -- The list of property values
*	AuxList			[in] -- The list of auxiliary values
*	Window			[in] -- If not empty, then this is prepended to each control is the ctrl list: default = ""
*	AllPropsPerCtrl	[in] -- If TRUE, the property list is applied to each control: default = 0
*	Delim			[in] -- The lists delimiter: default = "~"
*
* Returns:
*	The previous property value(s)
*
* History (Date, Initials, Notes)
*	04/06/2004		KRF		Initial Programmer
*
************************************************************************************************

Declare function Set_Property, FieldStore

* Prepare input
If Assigned(CtrlList) else CtrlList = ""
If Assigned(PropList) else PropList = ""
If Assigned(ValueList) else ValueList = ""
If Assigned(AuxList) else AuxList = ""
If Assigned(Window) else Window = ""
If Assigned(AllPropsPerCtrl) else AllPropsPerCtrl = 0
If Assigned(Delim) else Delim = "~"

* Prepare lists
Convert Delim to @RM in CtrlList
Convert Delim to @RM in PropList
Convert Delim to @RM in ValueList
Convert Delim to @RM in AuxList

* If "1 to Many" then alter the ctrl list to meet OI's Set_Property specs
If AllPropsPerCtrl then
	NumCtrls = Count(CtrlList, @RM) + (CtrlList NE "")
	NumProps = Count(PropList, @RM) + (PropList NE "")
	
	* Expand the control list be repeating each control by the number of properties
	OldCtrlList = CtrlList
	CtrlList = ""
	For i = 1 to NumCtrls
		CtrlList := Str(Field(OldCtrlList, @RM, i):@RM, NumProps)
		If i LT NumCtrls then CtrlList := @RM
	next i
	
	* Expand the property list to repeat the list for each control
	If NumCtrls GT 1 then
		PropList = Str(PropList:@RM, NumCtrls)
		PropList[-1, 1] = ""
	end
end

* Prepend Window Name
If Window then
	Window := "."
	NumCtrls = Count(CtrlList, @RM) + (CtrlList NE "")
	For i = 1 to NumCtrls
		CurrCtrl = Field(CtrlList, @RM, i)
		CtrlList = FieldStore(CtrlList, @RM, i, 1, Window:CurrCtrl)
	next i
end

* Call the Set_Property
Ans = Set_Property(CtrlList, PropList, ValueList, AuxList)

Return Ans
