MenuFlex 18.2.12

Novidades da versão 18.2.12, lançada em 12/04/2017.

Para uso com DataFlex 18.2.

Alterações em classes

  • Incluída propriedade pbSelectFolder na classe cMFDbCJGridColumn. Esta propriedade, quando True, faz com que o botão de prompt da coluna exiba uma tela para escolher um diretório em disco.
  • Incluída propriedade pbAllowEditOnMultiSelect na classe cMFDbCJGridColumn. Esta propriedade, quando True, permite a edição da coluna quando ela está em um objeto da classe cMFDbCJGridMultiSelect.
  • As classes definidas nos arquivos cLogddarqWsDataDictionary.dd, Logdd.DD, LogEvent.DD, Menuf.DD, Usuario.DD e Usuariof.DD foram alteradas para configurar a propriedade pbUseDDSQLFilters (introduzida na versão 18.0 do DataFlex) como True, se a tabela em uso não for DataFlex. As procedures OnConstrain existentes nestas classes também foi customizada para usar a propriedade psSQLFilter (também introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters for True.
  • Correção na classe cBlat: quando ocorria o erro “Não foi especificado o corpo da mensagem!”, a função ainda sim tentava enviar o e-mail.
  • Uma nova propriedade pbRestoreLastValueOnActivate foi adicionada nas classes cWsComboFormcWsForm, cWsCheckbox, cWsRadioGroup e cWsSpinForm. Quando esta propriedade for True, o MenuFlex irá guardar o valor do objeto no registro do Windows e quando o usuário executar novamente a aplicação, o valor será restaurado quando o objeto for ativado.
  • A classe cWsDataDictionary foi alterada para gerar log de alterações originárias de gravações em tabelas descendentes. Até a versão anterior, quando uma tabela filha era gravada, apenas as alterações relativas à ela própria eram logadas. A partir de agora, se uma gravação em uma tabela filha desencadear alterações em uma ou mais tabelas pais, estas alterações também serão logadas.
  • A imagem do botão de prompt das classes cMFDirectoryDbForm cMFDirectoryForm foi alterada. Em vez da lupa, agora aparece uma pasta aberta.
  • Correção na classe cWsDataDictionary que fazia com que o valor do recnum fosse gravado no valor do primeiro campo da tabela ao fazer o log. Este problema só ocorria na alteração de registros e se a opção de fazer log do recnum estivesse ligada.

Alterações em funções/procedimentos

  • Correção da função BuscarCEP, pois o link de conexão foi alterado pelo provedor.

Correções

  • Corrigido problema que causava o erro “Tabela não aberta. Tablenumber = 4007, Source = API.Get_Field_Value (Erro: 72)” ao abrir a tela “Manutenção do sistema -> Configuração de itens do menu” a partir do menu Pull-Down. Este erro não ocorria sempre e dependia da ordem de ativação das demais telas.
  • Corrigido problema na classe cMFVisualizadorImagem que não conseguia exibir a imagem se existisse caracter acentuado no caminho do nome da imagem.
  • Corrigido problema na rotina de exportação da tela “Log de eventos do sistema”, que não respeitava o filtro por tipo de evento e número de erro.
  • Corrigida descrição exibida na View “Exemplo de utilização da função BuscarCEP” (ExemploBuscarCep.vw), que informava ser um exemplo da “classe” BuscarCEP, quando o correto é “Função”.
  • Correção na classe cBlat: quando ocorria o erro “Não foi especificado o corpo da mensagem!”, a função ainda sim tentava enviar o e-mail.
  • Correção na função AbreTabelaModoExclusivo: se o usuário respondesse “não” para a pergunta sobre tentar abrir novamente a tabela, o tratamento do erro 4177 não era restaurado.
  • Correção na tela LogEventos.vw: a opção de exclusão de seleção não respeitava a seleção por tipo e número de erro.
  • Correção na tela LogDD.vw: a opção de pesquisar por campo não funcionava para o campo Recnum.
  • No projeto Exemplos.src, ocorria um erro ao tentar ativar a view ArquivosDeLog.vw. Este erro foi corrigido.
  • Correção da função BuscarCEP, pois o link de conexão foi alterado pelo provedor.
  • Correção na classe cWsDataDictionary que fazia com que o valor do recnum fosse gravado no valor do primeiro campo da tabela ao fazer o log. Este problema só ocorria na alteração de registros e se a opção de fazer log do recnum estivesse ligada.
  • Correção de problema no pacote Usuario.dd que causava o erro “Tabela não aberta. Tablenumber = 4000” ao tentar fazer login no sistema. Este erro só ocorria se o desenvolvedor alterasse o valor da propriedade piLogEventos da subclasse cWsDataDictionary para C_iSemLog.
  • Correção de problema no pacote Usuario.dd que causava o erro “Operação ilegal durante a transação” durante a criação do usuário ADMIN. Este erro só ocorria se o desenvolvedor alterasse o valor da propriedade piLogEventos da subclasse cWsDataDictionary para C_iSemLog.

Direitos de acesso

  • A ReportView “Direitos de acesso por item de menu” (Direitos.rv), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True nos objetos “Escolha o item do menu (0=todos)”, “Escolha a saída” e “Listar itens descendentes” da ReportView “Direitos de acesso por item de menu” (Direitos.rv).
  • O botão “Fechar” foi removido da ReportView “Direitos de acesso por item de menu” (Direitos.rv). Este botão era redundante, uma vez que o usuário pode fechar a tela no botão “X”, pressionando Esc ou ainda pressionando Ctrl+F4.

Diversos

  • A propriedade pbRestoreLastValueOnActivate do objeto cWsForm que recebe o Login do usuário foi configurada como True.
  • Um novo mecanismo, que faz uso de variáveis globais para guardar o identificador do objeto, foi criado para controlar os objetos de tabela de validação criados nos DD’s. Esta alteração visa economizar memória, visto que o objeto de validação será criado uma única vez, não importa quantos objetos DDO sejam criados na aplicação.

Exemplos

  • Incluída nova View (ExemplocMFDbCJGridMultiSelect.vw) com exemplo de uso da classe cMFDbCJGridMultiSelect.
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True nos objetos “Estado” e “Inscrição estadual” da View “Exemplo de validação de Incricação Estadual” (ExemploValidaIE.vw).
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True nos objetos “O que você deseja validar?” e “CPF/CNPJ” da View “Exemplo de validação de CPF/CNPJ” (ExemploValidaCPFCNPJ.vw).
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True no objeto “Escolha um dos meses” da View “Exemplo de utilização da classe cWsMesesComboForm” (ExemploMesesCombo.vw).
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True no objeto “Somente dia útil” da View “Exemplo de utilização da função IncrementMonth” (ExemploIncrementMonth.vw). Além disso, este objeto recebeu uma máscara, para aceitar apenas números.
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True no objeto “Número da série” da View “Exemplos de consulta de cotações” (ExemploCotacao.vw). Além disso, este objeto recebeu uma máscara, para aceitar apenas números.
  • Corrigida descrição exibida na View “Exemplo de utilização da função BuscarCEP” (ExemploBuscarCep.vw), que informava ser um exemplo da “classe” BuscarCEP, quando o correto é “Função”.
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True nos objetos “Chave de uso” e “CEP” da View “Exemplo de utilização da função BuscarCEP” (ExemploBuscarCep.vw).
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True no objeto “Escolha um diretório clicando no botão de Prompt” da View “Exemplo de utilização da função OpenBrowseFolder” (ExemploBrowseFolder.vw).
  • A propriedade pbRestoreLastValueOnActivate foi configurada como True nos objetos “Servidor SMTP”, “Porta”, “Usuário”, “De”, “Para”, “CC”, “BCC”, “Assunto”, “Solicitar confirmação de recebimento” e “Formato” da View “Exemplo de envio de e-mail usando a classe cBlat” (ExemploEnviaEmail.vw).

Logs, estatísticas e manutenção

  • Uma nova função global chamada VerificaTabelaLogItens permite criar um item no menu para verificar a capacidade da tabela LogItens a qualquer momento.
  • Um novo campo “Filtra o Log pelo registro posicionado” foi adicionado na guia “Log de eventos/estatísticas” da tela Configurações do sistema de menu. Se esta opção estiver marcada, quando a tela “Log de eventos dos dicionários de dados” for ativada a partir de uma View com um registro posicionado, será feito um filtro automático para exibir apenas os logs relativos àquele registro.
  • A View “Log de eventos do sistema” (LogEventos.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • As Views “Log de eventos dos dicionários de dados” (LogDD.vw e LogDDArquivado.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A rotina que faz a exportação dos registros da tela “Log de eventos do sistema” (LogEventos.vw) foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A rotina que faz a exclusão dos registros da tela “Log de eventos do sistema” (LogEventos.vw) foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • Corrigido problema na rotina de exportação da tela “Log de eventos do sistema“, que não respeitava o filtro por tipo de evento e número de erro.
  • O objeto “Campo” da tela “Log de eventos dos dicionários de dados” (LogDD.vw) foi alterado de cWsForm para cWsComboForm. Quando o usuário selecionar uma tabela no objeto “Tabela”, o combo “Campo” exibirá a lista com os nomes dos campos existentes naquela tabela. A opção de digitar continuará disponível, não sendo obrigatório escolher um valor da lista.
  • A classe cWsDataDictionary foi alterada para gerar log de alterações originárias de gravações em tabelas descendentes. Até a versão anterior, quando uma tabela filha era gravada, apenas as alterações relativas à ela própria eram logadas. A partir de agora, se uma gravação em uma tabela filha desencadear alterações em uma ou mais tabelas pais, estas alterações também serão logadas.
  • Correção na tela “Log de eventos do sistema” (LogEventos.vw): a opção de exclusão de seleção não respeitava a seleção por tipo e número de erro.
  • Um novo campo “Pasta padrão para arquivamento de log:” foi adicionado na guia “Log de eventos/estatísticas” da tela Configurações do sistema de menu. Se não for informado, o arquivamento de log será feito dentro da pasta Data da Workspace.
  • A classe do objeto “Pasta” da tela “Cadastro de logs arquivados” (ArquivosDeLog.vw) foi alterada para cMFDirectoryDbForm para facilitar a escolha de uma pasta.
  • Correção na classe cWsDataDictionary que fazia com que o valor do recnum fosse gravado no valor do primeiro campo da tabela ao fazer o log. Este problema só ocorria na alteração de registros e se a opção de fazer log do recnum estivesse ligada.
  • Correção na tela “Log de eventos dos dicionários de dados” (LogDD.vw): a opção de pesquisar por campo não funcionava para o campo Recnum.

Mensagens

  • A view “Minhas mensagens” (MinhasMensagens.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A grid da tela “Minhas mensagens” (MinhasMensagens.vw) foi alterada para não usar mais a propriedade ComBold, em vista do bug 7111 introduzido na versão 18.1 do DataFlex, que fazia com que a cor do texto das células em negrito sempre fossem alteradas para branco, dificultando a leitura. Em lugar da propriedade ComBold, usamos agora a propriedade ComWeight como solução de contorno até que a Data Access corrija o bug 7111.

Menu

  • A view “adastro de itens do menu” (Menu.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • O Dialog “Parâmetros de programa externo” (ParametrosProgramasExternos.dg), utilizado para definir parâmetros para itens do menu do tipo “P – Programa externo (.exe)”, foi alterado para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • Um novo form “Acesso por código” foi acrescentado na tela “Menu principal”. Este form permite que o usuário acesse rapidamente uma opção do menu através de seu código.
  • O form “Usuário” que era exibido na View “Menu principal”, que apresenta o menu TreeView, foi removido. É possível ver o nome do usuário logado na barra de status da aplicação, se a opção “Exibir o login do usuário na barra de status” estiver marcada em “Configurações do sistema de menu -> Efeitos visuais -> Barra de status”. Desta forma, a informação do usuário na tela do menu era redundante.

Novas funções globais

  • GetDefaultPrinter: devolve o nome da impressora padrão configurada no Windows.
  • GetOnlyNumber: recebe uma string e devolve apenas os números existentes dentro dela.
  • SetDefaultPrinter: altera a impressora padrão do Windows para uma impressora informada via parâmetro.
  • VerificaTabelaLogitens: verifica a capacidade da tabela Log itens e oferece a opção de arquivamento do Log.

Preferências do usuário

  • Um novo botão “Restaurar padrão” foi adicionado na tela Minhas preferências. Pressionando este botão, as preferências do usuário serão alteradas para o padrão definido no sistema.

Usuários e grupos de usuários

  • A View “Cadastro de de usuários” (Usuario.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A View “Cadastro de grupos de usuários” (GrupoUsuario.vw), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • A Lookup “Lista de usuários/grupos” (Usuario.sl), foi alterada para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • O Dialog “Escolha o usuário” (CopiaPerfil.dg), utilizado para fazer cópia de perfis de usuários, foi alterado para fazer uso da propriedade psSQLFilter (introduzida na versão 18.0 do DataFlex), se a propriedade pbUseDDSQLFilters (também introduzida na versão 18.0 do DataFlex) estiver configurada como True.
  • O campo “Expira em” no grupo “Senha” do “Cadastro de usuários” foi alterado para não mostrar nenhum conteúdo se a opção “Validade da senha (em dias)” estiver com o valor zero na tela “Configurações do sistema de menu“.
  • Um novo botão “Testar acesso” foi adicionado na tela “Cadastro de usuários“. Pressionando este botão, o administrador (ou o usuário que tiver acesso ao cadastro de usuários) poderá acessar o sistema usando o Login do usuário posicionado no cadastro.