Sabemos que, por vezes, se pretende alterar as propriedades de múltiplos métodos sem ter de abrir o diálogo de propriedades para cada método.
Por exemplo, pretende definir todos os métodos para o estado“Pode ser executado em modo preventivo“, e depois compilar a sua base de dados. Assim, com erros de compilação, obtém uma visão geral dos métodos a modificar para ser preemptivo.
Usando o METHOD GET NAMES para recuperar a lista de métodos da sua base de dados, e depois utilizando o comando METHOD SET ATTRIBUTES comando para modificar os atributos, permite-lhe modificá-los todos ao mesmo tempo!
Aqui está um exemplo que define todos os métodos de projecto para o 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; "preemptivo"; "capaz")
// Change the "preemptive" attribute value for all methods
For ($i;1;Size of array($arrName)
METHOD SET ATTRIBUTES ($arrName{$i};$attributes)
End for
Utilizar uma colecção para manipular as propriedades
4D tem agora um novo tipo, colecções, e muitos métodos prontos a usar para manusear colecções.
Então, como se utiliza este novo tipo? Insere-se nomes de métodos e propriedades numa colecção para pesquisar, modificar, ou simplesmente exibi-la numa caixa de listagem de tipo de colecção.
Aqui está um exemplo para armazenar todas as propriedades do método numa colecção:
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
Depois de editar os atributos, pode guardar o resultado com um simples laço na colecção:
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