Sabemos que a veces quieres cambiar las propiedades de varios métodos sin tener que abrir el diálogo de propiedades de cada método.
Por ejemplo, usted quiere establecer todos los métodos al estado«Puede ser ejecutado en modo preemptivo», y luego compilar su base de datos. Así, con los errores de compilación, obtendrá una visión general de los métodos a modificar para que sean preventivos.
Usando el comando METHOD GET NAMES para recuperar la lista de métodos de su base de datos, y luego usar el comando METHOD SET ATTRIBUTES para modificar los atributos, te permite modificarlos todos al mismo tiempo.
Aquí hay un ejemplo que establece todos los métodos del proyecto en modo preventivo:
ARRAY TEXT($arrName;0)
C_OBJECT ($attributes)
// Retrieve all methods in structure
METHOD GET NAMES ($arrName)
// Create object with the "preemptive" attribute set to "capable"
OB SET ($attributes; "preemptive"; "capable")
// Change the "preemptive" attribute value for all methods
For ($i;1;Size of array($arrName)
METHOD SET ATTRIBUTES (
$arrName{$i};$attributes)
End for
Utilizar una colección para manipular propiedades
4D tiene ahora un nuevo tipo, las colecciones, y muchos métodos listos para usar para manejar colecciones.
¿Cómo se utiliza este nuevo tipo? Se insertan los nombres de los métodos y las propiedades en una colección para buscarlos, modificarlos o simplemente mostrarlos en un cuadro de lista de tipo colección.
Aquí hay un ejemplo para almacenar todas las propiedades de los métodos en una colección:
C_OBJECT$i$attributes($attributes)
C_COLLECTION (colMethod)
ARRAY TEXT ($arrName;0)
colMethod :=New collection()
// Retrieve all methods in structure
METHOD GET NAMES ($arrName)
For ($i;1;Size of array($arrName)
$attributes :=New object()
// Retrieve the attributes for each method
METHOD GET ATTRIBUTES ($arrName{$i};$attributes)
// Add item in the collection
colMethod .push(New object("nombre";$arrName{ xml
End for
Después de editar los atributos, puede guardar el resultado con un simple bucle en la colección:
C_OBJECT($item;$tmp)
// Loop for each item in the collection
For each ($item;colMethod)
// Save attributes
$tmp :=$item.attributes
METHOD SET ATTRIBUTES (
$item.name;$tmp)
End for each
Demostración: Cambiar las propiedades de los métodos por código