Navigation: ABC Library Reference > EditMultiSelectClass > EditMultiSelectClass Methods >====== DeserializeValue (pre-process selection queue) ====== | |
DeserializeValue, VIRTUAL
The DeserializeValue virtual method extracts values (separated by the value of the Delimiter property) from the EIP columns USE variable (UseVar) and preloads the items into the Selected queue. DeserializeValue will split the SELF.UseVar contents using the SELF.Delimiter value as a separator, and store the resulting values to the Selected queue if values are in the available list. Any value that is not in the available list is discarded.
Implementation:
The DeserializeValue method is called before opening the MultiSelect dialog window from within the TakeEvent method of the EditMultiSelectClass.
Example:
EditMultiSelectClass.TakeEvent PROCEDURE(UNSIGNED E)
MSWindow MSWindowClass
MSSelectedIndex LONG
CODE
CASE E
OF EVENT:DroppingDown
IF SELF.Delimiter
FREE(SELF.Selected)
SELF.DeSerializeValue()
END
MSWindow.Init(SELF)
OPEN(MultiWindow)
0{PROP:Text} = SELF.Title
?Available{PROP:From} = SELF.Available.Item
?Available{PROP:Mark} = SELF.Available.Mark
?Selected{PROP:From} = SELF.Selected.Item
?Selected{PROP:Mark} = SELF.Selected.Mark
IF SELF.ReadOnly
DISABLE(?SelectSome)
DISABLE(?SelectAll)
DISABLE(?DeselectSome)
DISABLE(?DeselectAll)
DISABLE(?MoveUp)
DISABLE(?MoveDown)
END
MSWindow.Run()
CLOSE(MultiWindow)
DISPLAY(SELF.Feq)
IF MSWindow.Response=RequestCompleted THEN
IF SELF.Delimiter
SELF.SerializeValue()
END
SELF.TakeCompletedInit(RECORDS(SELF.Selected))
LOOP MSSelectedIndex=1 TO RECORDS(SELF.Selected)
GET(SELF.Selected,MSSelectedIndex)
SELF.TakeCompletedProcess(MSSelectedIndex,SELF.Selected.Item,SELF.Selected.Mark)
SELF.Available.Item=SELF.Selected.Item
SELF.Available.Mark=0
ADD(SELF.Available)
END
FREE(SELF.Selected)
SORT(SELF.Available,SELF.Available.Item)
END
RETURN CHOOSE(MSWindow.Response=RequestCompleted, EditAction:Ignore, EditAction:None)
ELSE
RETURN PARENT.TakeEvent(E)
END
See Also: SerializeValue , Delimiter, Selected