MenuFlex 14.0.7

Novidades da versão 14.0.7.

Para uso com Visual DataFlex 14.0.

Classes

A classe cWsGrid também foi alterada para usar as cores dinâmicas configuradas para os objetos.

A classe cBlat foi alterada para gerar um arquivo temporário com o conteúdo da variável psCorpo, visto que o envio do corpo do e-mail usando o parâmetro -body é limitado pelo sistema operacional.

Foi criada uma nova propriedade psButtonText na classe cWsBusinessProcess que permite configurar o Label do botão do Status Panel para um processamento específico.

Foi criada uma nova subclasse cWsCrystalReport e a classe cWsCrystal foi alterada para usar esta subclasse. Esta nova subclasse foi alterada para evitar a mensagem de erro “Basic syntax is not supported in group or Record selection formula” ao tentar configurar uma fórmula de seleção de registro em um subrelatório. Este erro não ocorre sempre. Aparentemente depende da versão e SPs do Crystal Reports XI instalado.

O valor padrão da propriedade Label_Col_Offset da classe cWsCalendarioForm foi alterado para 0 e o valor padrão da propriedade Label_Justification_Mode foi alterado para jMode_Right.

A classe cWsCrystal foi alterada para exibir uma pequena animação na barra de título para que o usuário saiba que o relatório não está travado.

Foram criadas 3 novas classes especializadas para serem usadas nos botões de Lookups e reduzir a redundância de código: cWsOkLookupButton, cWsCancelarLookupButton e cWsProcurarLookupButton. O Template de Lookup foi alterado para usar estas novas classes.

A classe cWsBusinessProcess foi especializada para alterar um padrão do próprio VDF: após ocorrer um erro, o Status Panel não volta a ser exibido para mostrar o progresso do processo, o desenvolvedor teria de ser responsável por tratar o erro e ativar novamente o Status Panel.

Foi criada uma classe chamada cOpenModeControler. Esta classe está definida no pacote cOpenModeControler.pkg, o qual já possui um objeto global chamado oOpenModeControler criado.

A subclasse cWsDbGrid foi alterada para executar um Switch_Back quando o usuário pressionar Shift+Tab na primeira célula da dbGrid.

A classe cWsDbList agora possui suporte nativo para exibição da descrição da tabela de validação. Agradecimentos a Samuel Pizarro por ceder o fonte para esta implementação.

A classe cWsApplication foi alterada para logar todos os erros ocorridos no sistema e também abortar qualquer transação pendente.

Foram adicionadas meta-tags em todas as subclasses do MenuFlex. As propriedades adicionadas aparecerão na categoria MenuFlex, na Class Pallete.

As subclasses do MenuFlex aparecem em grupos próprios na Class Pallete e as classes originais do VDF por padrão são exibidas também.

A classe dbModalPanel foi redefinida para respeitar a permissão configurada para a tela, quando chamada a partir do menu.

A classe cWsDataDictionary agora possui uma propriedade que, quando ligada, faz com que o valor do primeiro campo seja gerado automaticamente de forma que funcione como um identificador de registro. Uma única tabela chamada TABELAID é usada para gerar este valor, sem a necessidade de usar auto-incremento ou criar campos em tabela de sistema.

A classe cWsDataDictionary foi alterada para incluir a tabela de Log na estrutura externa somente se o DDO estiver com log ligado. O tipo de Lock também será configurado adequadamente de acordo com o tipo de Log configurado, otimizando assim o acesso e travamento à tabela de Log.

A classe cWsDataDictionary sofreu várias alterações para suportar as novas opções de log de operações.

As meta-tags de todas as classes foram atualizadas para serem exibidas corretamente na janela de propriedades.

Exemplos

O programa de exemplo da Library foi alterado para usar o menu CodeJock.

MenuFlex Library

Agora todas as subclasses, templates e pacotes do MenuFlex ficam em uma Library que pode ser utilizada de forma centralizada em várias Workspaces diferentes. A utilização da Library acaba com o problema de sincronização de pacotes e facilita o processo de atualização de novas versões do MenuFlex que forem lançadas.

Miscelânea

Todo o código foi revisado para não fazer referência ao campo Recnum, conforme recomendação a partir da versão 11.1 do Visual DataFlex.

Fornecida nova versão da DLL DllInscE32.dll que corrige problemas de validação para alguns estados existentes na versão anterior.

Opções visuais

A classe cWsGrid também foi alterada para usar as cores dinâmicas configuradas para os objetos.

Foi criada uma nova propriedade psButtonText na classe cWsBusinessProcess que permite configurar o Label do botão do Status Panel para um processamento específico.

Implementação do CodeJock no menu e barra de ferramentas.

Foi criada uma nova tela de preferências do usuário. Nesta tela, o usuário pode alterar aspectos visuais do sistema, independentemente dos outros usuários. As cores no cadastro de configuração funcionam agora como valores padrões que são atribuídos a novos usuários, mas os usuários que tiverem acesso à tela de preferências poderão alterar estes padrões, se desejarem.

Novas funções globais

  • CampoEstaNoIndice
  • HoraMinutoSegundoToString
  • IsNumber
  • PegaEnderecoIP
  • PegaPermissaoUsuarioMenu
  • RemoveAcentos
  • RoundNCasas
  • sCurrentTimeFormat
  • sDateFormat
  • sTimeFormat
  • Truncate
  • ValidaEmail
  • VerificaExistenciaTabela

Programa de instalação

Agora o MenuFlex possui um setup de instalação.

Recursos de administração e controle

Na versão anterior, a rotina que faz a verificação da capacidade das tabelas, quando executada, mantinha todas as tabelas abertas. Agora, ela irá fechar todas as tabelas que não estavam abertas antes de sua execução.

Foi criado controle de menu por módulo, para os casos onde haverão vários programas compilados na mesma Workspace com opções de menu diferentes.

O cadastro de opções do menu foi alterado para não ser necessário informar o campo Ordem. A ordem é gerada automaticamente ao final e o usuário pode usar as setas para mudar a ordem.

Adicionado suporte a criação de grupos de usuários. Os usuários pertencentes a um grupo herdam todas as permissões daquele grupo. As permissões herdadas não podem ser alteradas/excluídas, mas é possível acrescentar outras opções do menu que não estejam no grupo para o usuário.

Um novo pacote foi criado para gerar logs de eventos gerais do sistema. A classe cWsApplication foi alterada para gerar log de todos os erros ocorridos no sistema.

Agora é possível criar uma opção no menu para chamada de um programa externo, com passagem de parâmetros estáticos ou dinâmicos.

O log de operações foi radicalmente melhorado. Além de guardar muito mais informações (IP da máquina, usuário do Windows, etc), os valores de todos os campos são, por padrão, salvos em uma operação de exclusão e uma nova opção na tela de Log permite restaurar o registro excluído. A tela também possui novas opções avançadas de pesquisa e a opção de imprimir os registros exibidos.

O cadastro de usuário agora possui uma opção chamada “Super-usuário”. O usuário que tiver esta atribuição terá acesso a todas as opções do menu, com exceção daquelas que lhe forem negadas explicitamente.

Foi criada uma nova opção de Conta desativada no cadastro de usuário.

Foi criada uma nova opção de Vencimento da conta no cadastro de usuário.

O cadastro de itens do menu agora permite alterar o código do menu pai, sendo possível mover um item de um local para outro com maior facilidade.

Agora, na tela de cadastro de usuário, quando é dada permissão para um item do menu, se o pai do item do menu não tiver sido adicionado ainda, o sistema irá perguntar se você deseja adicionar os itens pais também para o usuário. Esta opção já existe na nova tela de cadastro de grupo.

Para o usuário ADMIN ou para Super-usuários, a TreeView do menu agora possui teclas de atalho para:

  • Chamar a tela de cadastro de menu posicionando o item no cabeçalho (Ctrl+M).
  • Chamar a tela de cadastro de menu posicionando o pai do item no cabeçalho (CTRL+P).
  • Chamar a tela de cadastro de menu posicionando o pai do item no cabeçalho e abrindo automaticamente a tela de configurações adicionais (se houver) (CTRL+F).
  • Alterar o nome do item corrente na TreeView (F2).

O relatório de direitos de acesso por item de menu foi totalmente reformulado. Agora é informado apenas um código de menu e o relatório irá listar este item e todos os usuários que possuem acesso a este item. Um checkbox “Listar todos os itens filhos do código de menu escolhido” fará com que todos os itens de menu dentro do item de menu escolhido também sejam listados.

Templates

Um novo template Modal Dialog não data-aware foi criado.

O template de Lookup foi alterado para utilizar 3 novas subclasses especializadas e reduzir a quantidade de código redundante: cWsOkLookupButton, cWsCancelarLookupButton e cWsProcurarLookupButton.

Foi criado um novo template MenuFlex - Projeto Windows.

Foi criado um novo template MenuFlex - Projeto Windows de Teste.

Bugs corrigidos

A tela de alteração de senha foi alterada para não permitir que o usuário digite uma nova senha maior que o tamanho do campo. Agora o tamanho da nova senha que ele poderá digitar será exatamente do mesmo tamanho do campo da tabela.

A tela de login foi alterada para não permitir que o usuário digite um login ou senha maior que o tamanho do campo.

A tela de criação do usuário Admin foi alterada para não permitir que o usuário digite uma senha maior que o tamanho do campo.

Foi feita uma correção no programa principal, pois os atributos de Lock-Timeout não estavam sendo configurados de acordo com as configurações do arquivo de sistema.

A classe cWsCrystalReport foi alterada para corrigir um erro da classe original da DAW que faz com que o Crystal não consiga localizar os arquivos DataFlex.

Foi corrigido um problema na tela de Log que causava erro “Bad Parameter” se fosse feito um filtro por uma tabela que estivesse sem nenhum registro.

Corrigido problema na restauração da cor dos objetos das classe cWsComboForm e cWsdbComboForm, quando a propriedade Entry_State é False.

Corrigido problema na tela de cadastro de usuários: ao pressionar Esc em alguns Forms, em vez de fechar a View, o container desaparecia.