Ajuda do LibreOfficeDev 27.2
A função CompatibilityMode() controla ou consulta o modo de execução. Afeta todo o código executado após a definição ou redefinição do modo de execução.
Utilize esta funcionalidade com precaução, limitando-a, por exemplo, à conversão de documentos.
CompatibilityMode (Opcional: Enable como Booleano) como Booleano
A função CompatibilityMode devolve sempre o modo que está ativo após a sua execução. Ou seja, se for chamada com um argumento, devolve o novo modo; se for chamada sem argumento, devolve o modo ativo sem o alterar.
Ativar: Ativa ou desativa o novo modo de compatibilidade quando o argumento está presente.
A função CompatibilityMode está relacionada com a Opção VBASupport 1; nesse caso, devolve sempre True. Não está relacionada com a diretiva do compilador Option Compatible.
Esta função pode afetar ou ajudar nas seguintes situações:
Âmbito das variáveis.
Execução do comando RmDir no modo VBA. No VBA, o comando RmDir apenas remove diretórios vazios, enquanto o LibreOfficeDev Basic remove um diretório de forma recursiva.
Alteração do comportamento do comando Dir no Basic. O sinalizador de diretório (16) para o comando Dir significa que, no Basic do LibreOfficeDev, apenas são devolvidos diretórios, enquanto que no VBA são devolvidos tanto ficheiros normais como diretórios.
Cálculo dos componentes de cor com as funções Red e Blue, que são intercambiáveis (A função Green não é afetada).
Supondo que exista um diretório NÃO vazio em file:///home/me/Test
Sub RemoveDir
MsgBox CompatibilityMode() ' False
CompatibilityMode( True )
RmDir( "file:///home/me/Test" )
CompatibilityMode False
MsgBox CompatibilityMode ' False
End Sub
Com CompatibilityMode( True ), o programa apresenta um erro; caso contrário, o diretório Test e todo o seu conteúdo são eliminados.
Alterar o comportamento de Dir
Sub VBADirCommand
CompatibilityMode( Enable := True ) ' Mostra também os ficheiros normais
Entry$ = Dir( "file:///home/me/Tmp/*.*", 16 )
Total$ = ""
While Entry$ <> ""
Total$ = Total$ + Entry$ + Chr$(13)
Entry$ = Dir
Wend
MsgBox Total$
CompatibilityMode Enable := False ' Mostra apenas os diretórios
End Sub