Autor Tópico: Dica WD: Como transformar todas as máscaras dos EDT_ em execução  (Lida 3309 vezes)

JacquesBica

  • Full Member
  • ***
  • Mensagens: 197
  • Karma: +0/-0
  • Boas cercas fazem bons vizinhos
Devido a vários motivos e sem querer polemizar a questão de usar ou não acentos e caracteres especiais no banco de dados, temos por norma gravar todos os campos com CAIXA ALTA e sem acentos. Para facilitar esta tarefa no WD, criei este procedimento baixo:

1) Defini os EDT_ (campos texto) sem máscara, como na fig1.
2) Ao abrir o form para editar o arquivo, implementamos o código abaixo através da chamada de uma função.

O parâmetro passado é o "grupo" que agrega todos os EDT_ na janela. A rotina faz uma varredura em todos os controles do tipo EDT_ (typInputText) e altera a máscara para maskUpper se o campo não tiver máscara definida no desenvolvimento. Desta forma os campos "EDT_Email" e "EDT_Telefone" podem receber as devidas máscaras no projeto a fim de serem ignorados pela rotina, uma vez que o Email será informado em letras minúsculas:

PROCEDURE JBMaskRecord(pGR_Registro)

sNomeControle is string
FOR i = 1 _TO_ pGR_Registro..Occurrence
   sNomeControle = EnumControl(pGR_Registro,i)
   
   IF {sNomeControle, indControl}..InputType = typInputText THEN
      IF {sNomeControle, indControl}..InputMask = maskNone THEN      
         {sNomeControle, indControl}..InputMask = maskUpper      
      END         
   END      
END       

Chesini

  • Newbie
  • *
  • Mensagens: 44
  • Karma: +0/-0
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #1 Online: Janeiro 21, 2012, 08:52:01 am »
Oi Jacques, sua função executaria igual se nos campos que quiser as letras em maiúsculas colocar como máscara "ALL IN CAPS (no accented characters)" ou "Uppercase letters only"?

zerloti

  • Jr. Member
  • **
  • Mensagens: 78
  • Karma: +0/-0
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #2 Online: Janeiro 21, 2012, 09:04:58 am »
Valeu JacquesBica !!!
Interessante , vai me economizar tempo, ja que só me preocupo em informar mascaras com carascteristicas especiais.

Chesini, quanto a sua duvida pelo que entendi a função só será executada em campos tipo texto e que não possui mascara informada, caso contrário o item do grupo será ignorado preservando a informação, mas JacquesBica me corrige se eu estiver errado.

Abraços ...

Chesini

  • Newbie
  • *
  • Mensagens: 44
  • Karma: +0/-0
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #3 Online: Janeiro 21, 2012, 09:18:25 am »
Oi Zerloti!
Então mas quando se cria o campo texto já define a mascara dele, ou então deixa padrão na análise a máscara que ele vai ter, ai só de arrastar o campo da analise para a janela, ele vem "mascarado" sempre, tanto pra janela, quanto pra report ou o que for.

zerloti

  • Jr. Member
  • **
  • Mensagens: 78
  • Karma: +0/-0
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #4 Online: Janeiro 21, 2012, 09:36:41 am »
Ola Chesini,
Na Analise, quando esta criando uma tabela, vc tem opção de  informar a mascara do campo que vc esta criando, padrão vem em branco, sem mascara.
Se vc Informar a mascara facilitaria quando vc for criar um formulário , um relatório  o windev ja utiliza a mascara que vc predefiniu na analise.

No Caso do exemplo do JacquesBica, eu pessoalmente vou utilizar em bancos que eu importei na analise, e não quero perder tempo de informar mascara em todos os campos das tabelas ...

Tbem no caso de criação de uma nova tabela opto em deixar em branco as mascaras dos campos texto que necessitam de caixa alta e tratar via programação chamando a função ao gravar por exemplo...

espero ter ajudado
abraços ...

JacquesBica

  • Full Member
  • ***
  • Mensagens: 197
  • Karma: +0/-0
  • Boas cercas fazem bons vizinhos
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #5 Online: Janeiro 21, 2012, 10:35:58 am »
Bom dia a todos.
O Zerloti fez uma boa observação, este recurso eu utilizo em tempo de execução porque gerei a "Analysis" importando a definição das tabelas a partir de um banco MS SQL já existente. Assim não perco tempo revisando as máscaras. Na criação do "Form" eu me preocupo apenas com os campos que tem formatação especial, como email, telefone, etc. Os campos "Text" normais, por exemplo, Nome, Descrição, Cidade, UF, etc etc... o próprio aplicativo se encarrega de ajustar.

JacquesBica

  • Full Member
  • ***
  • Mensagens: 197
  • Karma: +0/-0
  • Boas cercas fazem bons vizinhos
Re:Dica WD: Como transformar todas as máscaras dos EDT_ em execução
« Responder #6 Online: Janeiro 21, 2012, 10:40:46 am »

Chesini, quanto a sua duvida pelo que entendi a função só será executada em campos tipo texto e que não possui mascara informada, caso contrário o item do grupo será ignorado preservando a informação, mas JacquesBica me corrige se eu estiver errado.

Abraços ...

Você está correto, na procedure é possível selecionar o tipo de campo e a máscara a ser substituída. No meu exemplo, apenas altero os campo "Text" com maskNone para maskUpper.

PROCEDURE JBMaskRecord(pGR_Registro)

sNomeControle is string
FOR i = 1 _TO_ pGR_Registro..Occurrence
   sNomeControle = EnumControl(pGR_Registro,i)
   
   IF {sNomeControle, indControl}..InputType = typInputText THEN
      IF {sNomeControle, indControl}..InputMask = maskNone THEN     
         {sNomeControle, indControl}..InputMask = maskUpper     
      END         
   END     
END