I think what you want is a parameter that is an integer with a choice constraint:

In the choice constraint, put the source number for your crosspoint, and whatever name you want. In the above examples, we have the sources 2, 7, 12, and 14.
Then put that parameter on screen, and style it as you want (like in my previous post).
Then double click on the parameter, and add a task at the bottom. This task will trigger when the parameter changes.

In that task, you can use the parameter value to set your crosspoint. Something like this, but with a crosspoint block instead.

I assume you would pipe it into either the source, or destination of the set crosspoint block.
I did not completely understand what you are trying to do. You may need a second parameter (one for source and one for dest). But it should be the same process for both.
Here is a panel that has a source and destination parameter. If either changes, if puts a message on the console with both.
<abs contexttype="opengear" gridsize="20" id="_top" keepalive="false" style="">
<meta>
<params>
<param access="1" constrainttype="INT_CHOICE" name="source" oid="source" precision="0" type="INT16" value="7" widget="radio-toggle">
<constraint key="2">Hyperdeck 1</constraint>
<constraint key="7">Hyperdeck 2</constraint>
<constraint key="12">Hyperdeck 3</constraint>
<constraint key="14">Hyperdeck 4</constraint>
</param>
<param access="1" constrainttype="INT_CHOICE" name="dest" oid="dest" precision="0" type="INT16" value="14" widget="radio-toggle">
<constraint key="2">Hyperdeck 1</constraint>
<constraint key="7">Hyperdeck 2</constraint>
<constraint key="12">Hyperdeck 3</constraint>
<constraint key="14">Hyperdeck 4</constraint>
</param>
</params>
</meta>
<param expand="true" height="80" left="140" oid="source" showlabel="false" top="60" width="580">
<task tasktype="ogscript">/*! block id=1011,1008,1009,1010 !*/
ogscript.debug(("Source is " + params.getValue('source', 0) + " Destination is " + params.getValue('dest', 0)));
/*!!
<block id="1011" type="ogscript_debug" x="700" y="111" w="243" MESSAGE="ID:1008" />
<block id="1008" type="math_add" x="449" y="88" VALUE="Source is " VAL_1="ID:1009" VAL_1_1=" Destination is " VAL_1_2="ID:1010" w="218" VAL_1_3="" />
<block id="1009" type="param__top&amp;source (source)[0]" x="10" y="228" w="243" SET="" />
<block id="1010" type="param__top&amp;dest (dest)[0]" x="10" y="320" w="243" SET="" />
!!*/
/*!!<checksum>4ce05a8eb5377c4e847c53e2d9f5adb1</checksum>!!*/</task>
</param>
<param expand="true" height="80" left="140" oid="dest" showlabel="false" top="220" width="580">
<task tasktype="ogscript">
/*! block id=1011,1008,1009,1010 !*/
ogscript.debug(("Source is " + params.getValue('source', 0) + " Destination is " + params.getValue('dest', 0)));
/*!!
<block id="1011" type="ogscript_debug" x="700" y="111" w="243" MESSAGE="ID:1008" />
<block id="1008" type="math_add" x="449" y="88" VALUE="Source is " VAL_1="ID:1009" VAL_1_1=" Destination is " VAL_1_2="ID:1010" w="218" VAL_1_3="" />
<block id="1009" type="param__top&amp;source (source)[0]" x="10" y="228" w="243" SET="" />
<block id="1010" type="param__top&amp;dest (dest)[0]" x="10" y="320" w="243" SET="" />
!!*/
/*!!<checksum>4ce05a8eb5377c4e847c53e2d9f5adb1</checksum>!!*/</task>
</param>
<label height="40" left="140" name="Source" style="txt-align:west" top="20" width="80"/>
<label height="40" left="140" name="Destination" style="txt-align:west;" top="180" width="80"/>
</abs>
Hopefully that helps.
#DashBoard