Hola,
Tengo un cuadro de esquema que tiene un script de menú asociado. Ese script de menú tiene varios elementos de menú, algunos de los cuales tienen submenús.Muchos de los submenús contienen un conjunto de opciones mutuamente excluyentes que quiero marcar cuando se seleccionan, mientras que al mismo tiempo desmarco todas las alternativas (por ejemplo, si mi submenú establece el número de lugares decimales en una tabla a 1, 2, 3 o 4, entonces si selecciono "2", querré marcar el elemento "2" y desmarcar los elementos "1", "3" y "4").
Todavía estoy desarrollando esta aplicación, por lo que la estructura real del menú cambia constantemente a medida que agrego nuevas opciones y/o modifico las existentes. Por lo tanto, quiero evitar tener que codificar de forma rígida el proceso de verificación/des verificación anterior. En su lugar, quiero identificar automáticamente en qué submenú acabo de hacer clic en un elemento y luego ejecutar una pequeña función que borra todas las marcas dentro del mismo submenú y luego verifica el elemento en el que acabo de hacer clic.Puedo hacer esto con la ayuda de la propiedad "<< get submenu" si puedo hacer que mi script me diga en qué elemento del menú acabo de hacer clic.
yo pudo configure una variable de conteo para cada elemento (es decir, "M = 1" para el primer elemento del menú, "M = 2" para el segundo, "M = 3" para el tercero y así sucesivamente) y luego consulte el valor de M para averiguar en qué elemento acabo de hacer clic (como lo hice en el pequeño ejemplo a continuación que he preparado solo para ilustrar el problema), pero luego tendría que cambiar todas las asignaciones cada vez que el menú estaba editado, lo que más bien anula el objeto del ejercicio.
Se puede hacer esto? No puedo ver ninguna propiedad de un cuadro de contorno que me proporcione esta información.
Muchas gracias
expr_POD = expr ( por (yo= 1 , yo<= 4 , i++, My_OutlineBox << establecer el estado del elemento del menú ( 1 +yo, 0 )); Mi_cuadro_contorno << establecer el estado del elemento del menú ( 1 +vaina, 1 ));
expr_Rec = expr ( por (yo= 1 , yo<= 3 , i++, My_OutlineBox << establecer el estado del elemento del menú ( 6 +yo, 0 )); Mi_cuadro_contorno << establecer el estado del elemento del menú ( 6 + Rec, 1 ));
expr_doc = expr ( por (yo= 1 , yo<= 4 , i++, My_OutlineBox << establecer el estado del elemento del menú ( 10 +yo, 0 )); Mi_cuadro_contorno << establecer el estado del elemento del menú ( 10 +Doc, 1 ));
Mi_cuadro_contorno = ContornoCuadro ( "Mi caja de esquemas" ,
caja de texto ( "Algunas cosas en la ventana" ),
<< configurar el guión del menú (
{
"decimales" , " " ,
"1 VAINA" , VAINA= 1 ; expr_POD,
"2 POD" , VAINA= 2 ; expr_POD,
"3 POD" , VAINA= 3 ; expr_POD,
"4 POD" , VAINA= 4 ; expr_POD,
"Recipiente" , " " ,
"R y D" , Rec= 1 ; expr_Rec,
"Marketing" , Rec= 2 ; expr_Rec,
"Pre ventas" , Rec= 3 ; expr_Rec,
"Formato de documento" , " " ,
"Libro en cuarto" , Doc= 1 ; expr_doc,
"Papel folio" , Doc= 2 ; expr_doc,
"A4" , Doc= 3 ; expr_doc,
"Tableta" , Doc= 4 ; expr_doc,
"Correo electrónico" , Doc= 5 ; expr_Doc
}
),
/* Definir submenús */
<< establecer submenú ( 1 , 4 ),
<< establecer submenú ( 6 , 3 ),
<< establecer submenú ( 10 , 5 ),
/* Configurar valores predeterminados */
<< establecer el estado del elemento del menú ( 2 , 1 ),
<< establecer el estado del elemento del menú ( 7 , 1 ),
<< establecer el estado del elemento del menú ( 11 , 1 )
);
nueva ventana ( "NOROESTE" ,
Mi_Cuadro_de_Contorno
);
Tiene razón, no hay un mensaje JSL para obtener el índice del elemento de menú seleccionado, como <
En lugar de usar tres expresiones diferentes, como lo hizo anteriormente, recomendaría usar una función con tres parámetros. El uso de una función elimina la necesidad de variables extrañas y también simplifica el proceso para agregar nuevos elementos de menú más adelante y reduce la duplicación de código. Vea mi ejemplo a continuación para más detalles.
setMenuChecked = Function(
{
startIndexForSubgroup, // The index of the first menu item for this subgroup
endIndexForSubgroup, // The index of the last menu item for this subgroup
indexOfSelectedItem // The index of the item that was just selected
},
{i},
For( i = startIndexForSubgroup, i <= endIndexForSubgroup, i++,
My_OutlineBox << set menu item state( i, 0 )
);
My_OutlineBox << set menu item state( indexOfSelectedItem, 1 );
);
My_OutlineBox = Outline Box( "My OutlineBox",
Text Box( "Some stuff in the window" ),
<<SET menu="" script=""></SET>