Nous savons que vous souhaitez parfois modifier les propriétés de plusieurs méthodes sans avoir à ouvrir la boîte de dialogue des propriétés de chaque méthode.
Par exemple, vous voulez donner à toutes les méthodes le statut« Peut être exécuté en mode préemptif« , puis compiler votre base de données. Ainsi, avec les erreurs de compilation, vous obtenez un aperçu des méthodes à modifier pour être préemptif.
En utilisant la commande METHOD GET NAMES pour récupérer la liste des méthodes dans votre base de données, puis la commande METHOD SET ATTRIBUTES pour modifier les attributs, vous pouvez les modifier toutes en même temps !
Voici un exemple mettant toutes les méthodes du projet en mode préemptif :
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; "préemptif" ; "capable")
// Change the "preemptive" attribute value for all methods
For ($i;1 ;Size of array($arrName)
METHOD SET ATTRIBUTES (
$arrName{$i} ;$attributes)
End for
Utiliser une collection pour manipuler des propriétés
4D dispose désormais d’un nouveau type, les collections, et de nombreuses méthodes prêtes à l’emploi pour manipuler les collections.
Comment utiliser ce nouveau type ? Vous insérez des noms de méthodes et des propriétés dans une collection pour les rechercher, les modifier ou simplement les afficher dans une boîte de liste de type collection.
Voici un exemple pour stocker toutes les propriétés des méthodes dans une collection :
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("nom" ;$arrName{ xml
End for
Après avoir modifié les attributs, vous pouvez enregistrer le résultat avec une simple boucle sur la collection :
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
Démonstration : Modifier les propriétés d’une méthode par le code