Sappiamo che a volte si desidera modificare le proprietà di più metodi senza dover aprire la finestra di dialogo delle proprietà per ciascun metodo.
Ad esempio, si desidera impostare tutti i metodi sullo stato“Può essere eseguito in modalità preventiva“, quindi compilare il database. In questo modo, in caso di errori di compilazione, si ottiene una panoramica dei metodi da modificare per renderli preemptive.
Utilizzando il comando METHOD GET NAMES per recuperare l’elenco dei metodi dal database e poi usare il comando METHOD SET ATTRIBUTES per modificare gli attributi, consente di modificarli tutti contemporaneamente!
Ecco un esempio di impostazione di tutti i metodi del progetto in modalità preemptive:
ARRAY TEXTOB SET$i($arrName;0)
C_OBJECT ($attributes)
// Retrieve all methods in structure
METHOD GET NAMES ($arrName)
// Create object with the "preemptive" attribute set to "capable"
($attributes; "preemptive"; "capable")
// Change the "preemptive" attribute value for all methods
(For;1;Size of array($arrName)
METHOD SET ATTRIBUTES ($arrName{$i};$attributes)
End for
Utilizzare una collezione per manipolare le proprietà
4D ha ora un nuovo tipo, le collezioni, e molti metodi pronti all’uso per gestire le collezioni.
Come si usa questo nuovo tipo? Si inseriscono i nomi dei metodi e delle proprietà in una collezione per cercarli, modificarli o semplicemente visualizzarli in una casella di riepilogo di tipo collection.
Ecco un esempio per memorizzare tutte le proprietà dei metodi in una raccolta:
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("nome";$arrName{ xml
End for
Dopo aver modificato gli attributi, è possibile salvare il risultato con un semplice ciclo sull’insieme:
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
Dimostrazione: Modificare le proprietà dei metodi tramite codice