User Tools

Site Tools


deserializevalue_pre_process_selection_queue_.htm
Navigation:  ABC Library Reference > EditMultiSelectClass > EditMultiSelectClass Methods >====== DeserializeValue (pre-process selection queue) C6H0009.jpg ====== Previous pageReturn to chapter overviewNext page

DeserializeValue, VIRTUAL

blk2blue.jpg

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

deserializevalue_pre_process_selection_queue_.htm.txt · Last modified: 2021/04/15 15:57 by 127.0.0.1