Quando um documento 4D Write Pro está em modo de edição, é muitas vezes útil saber se foi realmente modificado pelo utilizador final. Com base nesta informação, as acções ou interfaces podem ser ajustadas para serem mais fáceis de utilizar.
Começando com 4D v19 R7, isto é agora mais fácil do que nunca.
BASE DE DADOS DEMO
DOCUMENTOS MODIFICADOS
Um documento pode ser modificado de diferentes maneiras. Qualquer uma delas:
- programando usando um dos muitos comandos ou
- pelo próprio utilizador final.
Um documento modificado deve geralmente ser guardado, quer em termos de conteúdo (adição, modificação, eliminação de texto, tabelas, ou imagens…), quer de aparência (estilo, margens, orientação, cores…).
Em qualquer caso, deve poder oferecer a possibilidade de o guardar através de um botão ou de um menu, e no caso extremo em que o utilizador gostaria de sair sem o ter guardado, deve poder oferecer-lhe uma opção de recuperação (“quer guardar…?”).
Isto é agora feito muito rapidamente, testando o novo documento.modified atributo.
O princípio deste atributo é simples. Quando o documento é criado ou carregado, o seu valor é definido para False. Depois, assim que o documento é modificado (por programação ou acção do utilizador), o valor muda automaticamente para True.
Torna-se simples tomar as decisões correctas 🙂
- Actualizar a interface
OBJECT SET ENABLED(*; "btnSave";WParea.modified) // true or false
- Confirmar salvar
If (Form event code=On Unload)
If (WParea.modified)
CONFIRM("Would you like to save the document ?"; "Save"; "Discard")
If (ok=1)
// do what you have to do
End if
End if
End if
Quer seja um espaço apagado ou uma vírgula adicionada, um único carácter em negrito ou itálico, definirá o documento.modified a True. Mesmo no caso de um desfazer, o documento.modified permanecerá True.
No entanto, é possível forçar o valor deste atributo através da programação, por exemplo, uma vez que o documento tenha sido guardado.
If (WParea.modified)
// save document
// (…)
// then set the status to false
WParea.modified:=False // will stay false until next document modification
End if
… … OU NÃO MODIFICADO?
Algumas acções só podem alterar a aparência dos documentos sem realmente alterar o conteúdo do documento; estas são as propriedades de visualização.
Pode alterar o factor de zoom, exibir ou não as réguas horizontais e verticais, escolher mostrar os caracteres invisíveis, fórmulas, cabeçalhos ou rodapés, etc. Nada disto será guardado. Isto significa que o documento não é modificado e, portanto, o documento.modified atributo permanece False. Ver a documentação sobre este novo atributo.
Conclusão
Esta propriedade nova e simples detectará rapidamente alterações dentro de um documento e executará acções em conformidade. Ou de forma transparente (fazendo salvamentos automáticos quando um documento permanece aberto, por exemplo) ou modificando a interface de forma inteligente de acordo com as circunstâncias!