O controle de versão do objeto é necessário para que os novos parâmetros no objeto atualizado sejam exibidos e usados corretamente nos objetos inseridos anteriormente.
O parâmetro protegido seted é usado para dar suporte ao controle de versão do objeto. O parâmetro é gerado automaticamente ao usar o assistente de script e pode ser renomeado ou adicionado manualmente, se necessário.
Considere o script para criar um retângulo (o script não está completo, apenas métodos relevantes para o exemplo são mostrados):
...
função ActHeader {
NParte=0;
Público(a,"Comprimento", b,"Largura");
Protegido(setado);
Mutável(a,b );
OnDlgBeforeSelectParam = 0;
MostrarQuandoSelPnt = 1;
ContornoOnLine = 0;
};
...
função OnInitialization {
if(seted == ValorDesconhecido) {
seted=1;
a = 100;
b = 100;
};
};
...
função OnDialog {
UniDialog( VFLD, a,"Comprimento", b,"Largura", TVIDS,lViewType,"Todos",VIEW,"Vids");
};
...
O método ActHeader especifica o parâmetro protegido definido e os parâmetros públicos de comprimento e largura.
No método OnInitialization para um objeto que não tem versão, adicione os parâmetros de comprimento e largura e defina a versão 1.
No método OnDialog, chamamos um diálogo com os campos de largura e comprimento.
Vamos inserir um objeto (doravante Objeto1). Ao inserir um objeto em um desenho, uma janela com parâmetros padrão será aberta.

Suponha que precisamos adicionar espessura de linha para o retângulo.
Para fazer isso, adicionamos o parâmetro “peso”:
...
Público(a,"Comprimento", b,"Largura", peso, "Peso");
...
função OnInitialization {
if(seted == ValorDesconhecido) {
seted=1;
rZOorder=100;
a = 100;
b = 100;
peso=1;
};
};
...
função OnDialog {
UniDialog( VFLD, a,"Comprimento", b,"Largura",peso,"Peso" TVIDS,lViewType,"Todos",VIEW,"Vids");
};
...
Vamos inserir um objeto (doravante Objeto2). A caixa de diálogo exibiu corretamente a espessura da linha.

Vamos abrir o Objeto1 para edição e ver que o parâmetro “Peso” é exibido incorretamente.

O ponto é que o Object1 já tem a versão (seted) 1 e o peso não foi atribuído.
Vamos corrigir o método OnInitialization. Se não houver versão, aumentaremos para 2 e adicionaremos uma condição se tivermos a versão 1.
função OnInitialization {
if(seted == ValorDesconhecido) {
seted=2;
rZOorder=100;
a = 100;
b = 100;
peso=1;
};
se(setado == 1) {
seted=2;
peso=1;
};
};
Agora objetos de versões mais antigas serão abertos corretamente.


