Wir wissen, dass Sie manchmal die Eigenschaften mehrerer Methoden ändern möchten, ohne den Eigenschaftsdialog für jede Methode öffnen zu müssen.
Sie möchten zum Beispiel alle Methoden auf den Status„Kann im präemptiven Modus ausgeführt werden“ setzen und dann Ihre Datenbank kompilieren. So erhalten Sie bei Kompilierungsfehlern einen Überblick über die Methoden, die Sie so ändern müssen, dass sie präemptiv sind.
Mit dem Befehl METHOD GET NAMES Befehls, um die Liste der Methoden aus Ihrer Datenbank abzurufen, und dann mit dem METHOD SET ATTRIBUTES um die Attribute zu ändern, können Sie sie alle gleichzeitig ändern!
Hier ist ein Beispiel, bei dem alle Projektmethoden auf den präemptiven Modus eingestellt werden:
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
Verwendung einer Sammlung zur Bearbeitung von Eigenschaften
4D hat jetzt einen neuen Typ, Sammlungen, und viele gebrauchsfertige Methoden, um Sammlungen zu handhaben.
Wie verwenden Sie diesen neuen Typ? Sie fügen Methodennamen und Eigenschaften in eine Sammlung ein, um sie zu suchen, zu ändern oder einfach in einem Listenfeld vom Typ Sammlung anzuzeigen.
Hier ist ein Beispiel für die Speicherung aller Methodeneigenschaften in einer Sammlung:
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("name";$arrName{ xml
End for
Nachdem Sie die Attribute bearbeitet haben, können Sie das Ergebnis mit einer einfachen Schleife in der Sammlung speichern:
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