Ferramentas

Este livro está destinado a orientar na instalação ou configuração das ferramentas utilizadas para o processo de desenvolvimento e ferramentas internas do sistema.

Beyond Compare

Aqui encontrará como instalar, configurar e usar esta ferramenta

Beyond Compare

Instalação

Beyond Compare é um utilitário que combina funções de comparação de diretório e comparação de arquivos.

Em anexo nesta página há o instalador do programa e a "licença", baixe e extraia.

37.png

Execute o BCompare-x64.msi

Não abra o Beyond Compare

Abra a pasta Crack e execute como Administrador o arquivo keygen.exe e aperte em Patch

38.png

Encontre o BCompare.exe, geralmente estará na pasta C:\Program Files\Beyond Compare 4 após isso irá aparecer a mensagem indicando que deu certo.

39.png

Beyond Compare

Configuração (Recomendado)

Abra o Beyond Compare e clique em Folder Compare

40.png

Após clique no Menu Session -> Session Settings...

41.png

Na tela que se abre, vá na aba Comparison e deixe-a conforme a imagem a baixo para melhor desempenho

42.png

 

Caso a busca ainda estiver lenda, se atentar se está selecionado para trazer apenas as diferenças.

43.png

Menu View poderá deixar da seguinte forma para ter alguns recursos a mais como mostrar os espaços e quebras de linha, facilita para indentação.

44.png

Menu Tools -> Options algumas opções para facilitar o trabalho, isso faz aparecer uma linha na vertical na coluna 130, assim facilita ao revisar códigos.

45.png

Menu Tools -> File Formats aba Misc poderá deixar da seguinte forma para que quando apertar TAB ele acrescente dois espaços

46.png

Beyond Compare

Uso da ferramenta

Para comparar duas pastas, clique com o botão direito do mouse em cima da primeira e selecione Select Left Folder for Compare, na pasta que será comparada, apertar botão direito do mouse e selecionar Compare to "[Aqui estará nome da primeira pasta]", veja o exemplo:

19.png

O resultado desde exemplo será:

20.png

Poderá navegar pelas pastas e encontrar arquivos alterados, dando um duplo clique verá as alterações de um arquivo para o outro como mostra o exemplo a seguir:

21.png

Para passar as alterações de um para outro, pode ser feito clicando na seta amarela e passando um grupo de alterações, ou se quiser passar apenas uma linha do grupo de alterações, clique no numero da linha e após na seta azul como mostra os exemplos a baixo:

Grupo de alterações:

Antes:

22.png

Depois:

23.png

Uma linha do grupo de alterações:

Clique no numero da linha para aparecer a seta azul:

24.png

Após clicar na seta azul:

25.png

Tortoise SVN

Por se tratar de uma ferramenta de ampla utilidade no dia a dia, foi criado um livro para os comandos básicos que se encontram disponíveis no livro "SVN - Básico" dentro das prateleiras Processos Qualidade e Processos Desenvolvimento.

Tortoise SVN

Instalação

Poderá baixa-lo na Página Oficial se atentando ao sistema operacional, no meu caso irei no mais atual e 64-bit.

28.png

No Wizard que abrir, poderá ir clicando em Next até o final e clicar em Install 

29.png

Após o processo terminar, apertar em Finish.

Pronto, está instalado.

Tortoise SVN

Configuração

Pré-Requisito
Beyond Compare 4 instalado, se não estiver, veja Aqui como fazer.

Em uma tela qualquer como a Área de Trabalho ou Windows Explorer, clique com botão direito do mouse, TortoiseSVN -> Settings 

Navegue até Diff Viewer e deixe ela como a imagem abaixo:

31.png

Em Diff Viewer -> Merge Tool e deixe ela como a imagem abaixo:

32.png

Após isso clique em Aplicar e depois OK.

Pode acontecer de em alguns momentos pedir a suas credencias em uma tela como esta:

33.png

 

Basta preencher com seu usuário e senha, e prosseguir.


Por se tratar de uma ferramenta muito utilizada no dia-a-dia do desenvolvimento e da qualidade, existe um livro onde são explicados os comandos básicos do SVN e suas utilidades, você pode acessar o livro clicando aqui.

TMS Component

15.png

$(CodigoTerceiros)\TMS Component Pack 9.0.2.0
$(RotinasComuns)\NovoGerador

 

Controle Bases FireBird

O Controle Bases FireBird é usado para fazer trocas de bases

Controle Bases FireBird

Controle Bases FireBird

image-1624637981670.png

   • Botão direito do mouse > Propriedades > Aba Segurança > Editar.
   • Selecionar o seu usuário e Permitir todos os itens.

image-1624638024093.png

 

image-1624638067758.png

• Cadastrar diretório que as bases “*.FDB” estão localizadas.

image-1624638093221.png

image-1624638099808.png

image-1624638114164.png

     • Ativar uma base, para ativar, click na check da coluna Ativo ou Botão direito do mouse Ativar Base ou Barra de espaço.

 

image-1624638206934.png

    • No caminho do Banco de Dados colocar “SUPERSOFT” e Salvar.

image-1624638231845.png

 

image-1624645245896.png

 

 

 

 

 

 

 

[BETA] - GExperts

GExperts é uma ferramenta de auxílio ao desenvolvedor, voltada a atalhos que facilitam a localização de componentes e funções, além de outras utilidades.

[BETA] - GExperts

Instalação e configurações

GExperts é uma ferramenta de auxílio ao desenvolvedor, voltada a atalhos que facilitam a localização de componentes e funções, além de outras utilidades.

Instalação

A versão utilizada, será a do Delphi 10.2 Tokyo.

Antes de começar a instalação deve-se fechar o Delphi.

Execute o GExperts_10.2.exe.

A instalação é bem simples, sendo necessário apenas dar next, install e finish.

Feito isso, ao abrir o Delphi, o menu já estará disponível na IDE

image-1613062949654.png

Configurações 

Atualmente, utilizamos o comunicador Miranda NG, que utiliza atalhos com teclas iguais ao GExperts. Como o comunicador tem prioridade, as teclas de atalho poderão acionar o Miranda, impedindo que alguns atalhos do GExperts sejam utilizados. Fica a critério do desenvolvedor decidir quais atalhos irá mudar. 

No Miranda NG:

image-1613063622856.pngimage-1613064051599.png

Caso não utilize nenhum dos atalhos, eles poderão ser desabilitados para não ocorrerem conflitos.

No Delphi - GExperts:

image-1613064281901.png

As teclas de atalho das funções que serão apresentadas na página atalhos poderão ser alteradas através desse menu de acordo com a necessidade do desenvolvedor.

 

[BETA] - GExperts

Atalhos

Os atalhos que serão apresentados a seguir são padrões do GExperts. Caso necessário, eles poderão ser alterados a critério do desenvolvedor de acordo com seus respectivos nomes. 

A ferramenta oferece vários atalhos ao desenvolvedor, facilitando a localização de componentes, métodos, palavras-chave, e mais algumas utilidades.

Dentre eles, os de mais destaque são:

Adição de uses (Ctrl + Shift + A) - Delphi

Esse é um atalho próprio do Delphi, mas tem grande valia e poderá ser utilizado ao adicionar um método do sistema a uma unit que não tenha sua use declarada. O atalho irá buscar e apresentar a use necessária para a utilização do mesmo.

Exemplo:

image-1613066583139.png

Durante uma implementação, o método do sistema "TProcuraRegistro" foi adicionado à uma unit que ainda não tem informação sobre sua função, ficando sublinhado em vermelho. Para adicionar sua use, basta utilizar as teclas de atalho, selecionar a unit e confirmar.

image-1613066718207.png

Por padrão, as uses podem ser adicionadas em "Implementation". Caso ocorra algum erro, passá-la para "Interface". 

Modo de edição sincronizada (Ctrl + Shift + J) - Delphi

Mais um atalho nativo do Delphi, será muito útil na hora de refatorar trechos de código, podendo mudar nomes de métodos, propriedades e variáveis dentro do código selecionado 

Exemplo:

image-1616423109037.png

O trecho apresentado se encontra fora dos padrões de código, sendo necessário refatora-lo. 

Selecione o trecho de código desejado, e utilize o atalho para que o código fique selecionado da seguinte forma: 

image-1616423279898.png

Após isso, basta reescrever a palavra desejada, e as demais palavras em comum dentro do trecho selecionado serão alteradas.

image-1616423594120.png

Procedure List (Ctrl + G)

Esse atalho é utilizado para visualizar todos os métodos vigentes na unit, dando mais agilidade na hora de encontrar o método desejado. 

image-1613067516943.png

Grep Search (Shift + Alt + S)

Esse atalho faz uma busca em determinado local, procurando pela palavra-chave digitada, sendo muito útil para pesquisas. 

image-1613069029400.png

Em "Files", o alcance da pesquisa pode ser alterado. Na maior parte das vezes, a opção "All files in project" será suficiente. 

Caso queira fazer uma pesquisa mais centrada, utilizar a opção "Directories". Em "Directory Search", selecionar o caminho da pasta que será utilizada na pesquisa.

Find Component Reference (Ctrl + Shift + F)

Esse atalho pesquisará no formulário da unit o componente selecionado e, caso encontre, mostrará sua localização. 

Exemplo:

Localizando o componente "DBE_CLIENTESCODREG" no formulário de Clientes

image-1613070194935.png

image-1613070220279.png

 Ao utilizar o atalho, o formulário será aberto selecionando o componente marcado. 

Identifier Reference (Ctrl + Alt + Setas cima/baixo)

Esse atalho serve para localizar o próximo local onde aparece a palavra selecionada. Útil para acompanhar atribuições de variáveis. 

Observação:

Em algumas máquinas, esse atalho rotacionará a tela, sendo necessário altera-lo através do menu "Configuration..." visto anteriormente. 

Move to Matching Delimiter (Ctrl + Alt + Seta direita)

Encontrará o delimitador correspondente. Útil na hora de encontrar o end de um begin, o finally de um try, ou até mesmo para selecionar os parênteses do método externo. 

Exemplo: 

Localizando o end de um begin

image-1613072117781.png

Posicionar o mouse no begin e utilizar o atalho

image-1613072178026.png

A marcação será redirecionada até a linha em que se encontra o end.

Locate matching delimiter (Ctrl + Alt + Seta esquerda)

Seleciona todo o código que está dentro do delimitador selecionado. Útil ao adicionar uma nova condição, onde é necessário mover o código dois espaços a frente. 

Exemplo:

Adicionando uma nova condição ao código

image-1613073129252.png

image-1613073250916.png

Posicionar o mouse no delimitador end adicionado e utilizar o atalho

image-1613073379980.png

Assim, todo o código poderá ser facilmente reposicionado, principalmente ao se tratar de trechos maiores. 

Set tab order

Esse atalho, por padrão, não vem configurado. 

Acessar menu "configuration..." visto na página anterior 

image-1613073659710.png

Adicionar teclas de atalho. Recomendação: Ctrl + Shift + T

Apesar de pouco comum, convencionalmente poderá ser necessário adicionar componentes e alterar o "tab order" dos mesmos. 

Com esse atalho, os componentes podem ser organizados apenas arrastando-os, não sendo necessário alterar as propriedades de cada um.

image-1613073870703.png

  

 

 

Monitor Tortoise SVN

Ferramenta monitora as alterações (Commits) em projetos no SVN de sua preferencia.

Monitor Tortoise SVN

Configuração e Uso

Tortoise Monitor, é ferramenta para acompanhar as alterações em projetos de seu interesse.

Pré-requisito:

- Ter instalado o Tortoise SVN

- Ter conhecimento sobre SVN


Para iniciar, localize em sua máquina o arquivo TortoiseProc.exe que deve estar dentro da pasta de instalação do Tortoise, no meu caso está em : C:\Arquivos de Programas\TortoiseSVN\bin.

59.png

 

Execute ele e verá a seguinte tela:

60.png

Primeiro vá na opção 4, deixe conforme exemplo a baixo: (o 10 pode mudar para quantos minutos quiser)

61.png

Agora, vamos na opção 1 e começar cadastrar os projetos que queremos:

Name: Coloque o nome que preferir indicar.

Path or URL: Endereço do projeto

Username e Password: Suas credenciais de rede, caso perceba que algo não está dando certo, tente colocar seu Username com todas letras minusculas.

Clique em OK, ficará algo parecido com:

63.png

Faça esse mesmo processo com os projetos que tiver interesse, se errar pode usar a opção 2 para editar, e caso não quiser mais, poderá utilizar a opção 3. 

Segue exemplo de como fica o acompanhamento:

64.png

Atualização do FastReport

Capitulo destinado a atualização no SVN e processo que cada um fará local.

Atualização do FastReport

Atualização no ambiente de trabalho

Resumo do processo

Será feito quando houver em nosso repositório, alguma atualização desse componente.

Etapas do processo

- Atualizar a pasta Componentes\Terceiros

- Instalar nova versão do FastReport

- Alterar a Library padrão local caso haja alteração.

- Instalar os pacotes da nova versão.

Ponto inicial do processo

- Atualizar a pasta Componentes\Terceiros

Ponto final do processo

- Instalar os pacotes da nova versão.

Resultado esperado

- Com FastReport atualizado, deverá aparecer novos componentes ou novas possibilidades de acordo com cada atualização (exemplo: integração com novo tipo de bancos).

 

Atualização do FastReport

Instalação

Desinstalar o FastReport antigo

Com Delphi aberto

Menu Component -> Install Packages -> Localize e remova os itens abaixo:

67.png

Aperte em OK.

Instalando a nova versão

Com Delphi fechado

- Acessar a pasta Componentes\Terceiros\FastReport

- Altere o nome da pasta LibD25 para algo diferente, exemplo LibD25 Antiga

- Executar como Administrador Recompile.exe 

68.png

- Deixar conforme a imagem a baixo se atentando ao campos em destaque,  e apertar em "Compile"

661.png

Após concluído o processo, pode fechar a janela.

Com Delphi aberto

- Se aparecer erro ao abrir, clique em No.

- Alterar sua Library para a atualizada disponível na Wiki

- Instalar os pacotes, para isso(faça duas vezes esse procedimento):

Para verificar se deu certo, na paleta de componentes, busque por frx e veja a versão e as paletas criadas, caso não apareça, feche e abre novamente o Delphi:

69.png

Se tudo tiver dado certo, pode excluir a pasta que renomeou no começo do processo, que nesse caso chamamos de LibD25 Antiga.

Pronto.

Relatório rave

Manipulação de relatórios utilizando rave

Relatório rave

Adição de campos no Data View do Rave Reports

Neste capítulo será abordado todo o processo para a adição ou remoção de campos no Data View de um relatório RAVE

Passo 1: Localizar os componentes no formulário

Primeiramente, será necessário localizar o formulário que contém o relatório RvProject que será alterado (normalmente, estará localizado na tela de impressão do relatório). Após localizar o componente rave, será necessário localizar os componentes FDQuery que terão as querys responsáveis por carregar as informações do banco de dados que serão usadas no relatório. 

Para localizar os FDQuerys do relatório, clique no componente RvDataSetConnection e verifique o componente apontado na propriedade "DataSet".

Utilize "F11" para acessar as propriedades dos componentes.

Alguns componentes podem estar "escondidos". Ajuste o tamanho do formulário, se necessário.

image-1622049529709.png

No exemplo acima, a query pode ser localizada através do caminho RVC_RELAT > CDS_RELAT > DSP_RELAT > QRELAT

Obs.: Guarde o nome do componente que está ligado ao DataSet do RvDataSetConnection, ele será usado posteriormente.

image-1622049640256.png

Em alguns casos, a query poderá estar ligada diretamente ao RvDataSetConnection.

 
Passo 2: Localizar, no código fonte, a montagem da query 

Após localizar os TFDquerys, vimos que as querys que alimentam esse relatório são: QRelat e QEmpresa. Descoberto o nome das querys, busca-las dentro do código (utilizando Ctrl + F, por exemplo).

Adicionar ou remover os campos necessários no SELECT referente à query que será utilizada no relatório. Nesse exemplo, o campo "DeducoesServicoes" será incluído ao relatório. 

image-1622051469729.png

Obs.: Podem existir mais lugares onde a query é montada. Alterar todos os trechos que forem necessários.

 
Passo 3: Incluir e configurar uma nova FDQuery e um FDConnection ao formulário

Para incluirmos o novo campo ao relatório, será necessário adicionar novos componentes FDQuery e FDConnection ao formulário (caso a lista de componentes não esteja aberta, pode ser encontrada através do menu View > Tool Windows > Tool Palette). Na propriedade "Connection" da nova FDQuery, atribua o novo FDConnection.

image-1622050347673.png

        No novo FDConnection, realizar as seguintes configurações: 

image-1622050579269.png

O parâmetro "Database" deve receber o caminho em que a base de dados .FDB está localizada.

 
Passo 4: Extrair do código a query-alvo completa

Localize o fim da montagem da query no código e adicione um breakpoint uma linha abaixo do fim da montagem. Execute o sistema até que chegue ao breakpoint adicionado e execute a função "MostraParams(NomeDaQuery)". Uma tela com a query será aberta no sistema.

IMPORTANTE: Por garantia, a query gerada deverá ter todos os campos do SELECT, sendo assim, os trechos de DLL deverão ser incluídos.

image-1622052160887.png

image-1622052366197.png

        Copie todo o texto da query gerada, checando até o fim com Ctrl + End para que não fique trechos para trás. 

 
Passo 5: Configurar a nova FDQuery utilizando a query extraída

No formulário, dar duplo clique na FDQuery para que o editor seja aberto. Cole a query copiada anteriormente na caixa "SQL Command" e clique em executar. Os campos gerados pela SQL deverão aparecer na aba "RecordSet". Verifique se todos os campos (inclusive o seu) foram gerados. Checado os campos, clique em "OK".  

image-1622052739889.png

Com a FDQuery configurada, clique no componente "RvDataSetConnection" referente à query que está sendo trabalhada, e atribua na propriedade "DataSet" a nova FDQuery.

image-1622053072383.png

 
Passo 6: Incluir novo(s) campo(s) no Data View do Rave

Execute o sistema novamente até o breakpoint adicionado no passo 4. Com duplo clique no componente RvProject, abra o Rave Reports. No menu File > Open > Selecione o arquivo .rav do relatório-alvo na pasta do seu branch > Abrir. No menu lateral, localizar o View referente à query que está sendo trabalhada > Clique direito > Refresh.

image-1622054363567.png

CUIDADO: Caso alguma mensagem de aviso apareça na tela, consultar um dev antes de realizar o refresh para que nenhum campo seja apagado.

Após realizar o refresh, o novo campo deverá estar localizado dentro do componente view. Salve o relatório (Ctrl + S) e Interrompa novamente a execução do sistema.

image-1622054545273.png

 

Passo 7: Configurar os componentes para a inclusão do(s) novo(s) campos no relatório

No formulário, clique no componente RvDataSetConnection que foi utilizado para adição do(s) campo(s), e na propriedade "DataSet" atribua o componente que estava sendo usado antes.

image-1622125321870.png

Na propriedade "ProjectFile" do componente RvProject, atribua o caminho do relatório que foi aberto anteriormente no Rave. Dê um duplo clique no dlg da propriedade "StoreRAV", clique em "Load" para que as alterações sejam carregadas, depois "Close".

image-1622125390531.png

Abra o RvProject e cheque se o(s) novo(s) campo(s) está(ão) no Data View após carregar as informações. Feito isso, os novos componentes adicionados podem ser excluídos do formulário.

Relatório rave

Novo método - Adição de campos no Data View do Rave Reports

Neste capítulo será abordado todo o processo para a adição ou remoção de campos no Data View de um relatório RAVE

Alterações do novo método encontram-se a partir do Passo 3

Passo 1: Localizar os componentes no formulário

Primeiramente, será necessário localizar o formulário que contém o relatório RvProject que será alterado (normalmente, estará localizado na tela de impressão do relatório). Após localizar o componente rave, será necessário localizar os componentes FDQuery que terão as querys responsáveis por carregar as informações do banco de dados que serão usadas no relatório. 

Para localizar os FDQuerys do relatório, clique no componente RvDataSetConnection e verifique o componente apontado na propriedade "DataSet".

Utilize "F11" para acessar as propriedades dos componentes.

Alguns componentes podem estar "escondidos". Ajuste o tamanho do formulário, se necessário.

image-1622049529709.png

No exemplo acima, a query pode ser localizada através do caminho RVC_RELAT > CDS_RELAT > DSP_RELAT > QRELAT

Obs.: Guarde o nome do componente que está ligado ao DataSet do RvDataSetConnection, ele será usado posteriormente.

image-1622049640256.png

Em alguns casos, a query poderá estar ligada diretamente ao RvDataSetConnection.

Passo 2: Localizar, no código fonte, a montagem da query 

Após localizar os TFDquerys, vimos que as querys que alimentam esse relatório são: QRelat e QEmpresa. Descoberto o nome das querys, busca-las dentro do código (utilizando Ctrl + F, por exemplo).

Adicionar ou remover os campos necessários no SELECT referente à query que será utilizada no relatório. Nesse exemplo, o campo "DeducoesServicoes" será incluído ao relatório. 

image-1622051469729.png

Obs.: Podem existir mais lugares onde a query é montada. Alterar todos os trechos que forem necessários.

Passo 3: Incluir e configurar uma nova FDQuery, um FDConnection e um RvDataSetConnection ao formulário

Para incluirmos o novo campo ao relatório, será necessário adicionar novos componentes FDQuery, FDConnection (este copiaremos da unit (DMCONEXOES.pas)  e um RvDataSetConnection ao formulário (caso a lista de componentes não esteja aberta, pode ser encontrada através do menu View > Tool Windows > Tool Palette). 

componentes.png

Na propriedade "Connection" da nova FDQuery, atribua o CO_Principal.

Na propriedade "DataSet" do RvDataSetConnection1, atribua a nova FDQuery.

No novo CO_Principal, realize as alterações necessárias para apontar para o banco de dados conectado:

coprincipal.png

O parâmetro "Database" deve receber o caminho em que a base de dados .FDB está localizada.

Na propriedade "Active" da nova FDQuery, atribua True.

Passo 4: Monte a cláusula com os novos campos

Diferente do método anterior, neste é necessário adicionar apenas os campos desejados, podendo ser utilizado até mesmo CAST. 

No formulário, dar duplo clique na FDQuery para que o editor seja aberto. Coloque a cláusula para gerar os campos desejados, clique em execute e verifique se trouxe os campos corretos, exemplo:

retornoBusca.png

Passo 5: Adicionar a nova FDQuery temporariamente no relatório

Com duplo clique no componente RvProject, abrirá o Rave Reports. No menu File > Open > Selecione o arquivo .rav do relatório-alvo na pasta do seu branch > Abrir.

Vá em File > New Data Object. Selecione Direct Data View , clique em Next> 

NewDataObject.png

Caso apareçam Warnings, aperte ok em todos

Selecione o novo RvDataSetConnection1 na lista que aparecerá e aperte em Finish.

Nesse momento na lista de Data View Dictionary terá um novo objeto contendo somente os campos que deseja adicionar:

DataView.png

Passo 6: Mover novo(s) campo(s) do novo Data View para o Data View desejado

Com botão SHIFT selecione todos os campos, agora com botão CTRL pressionado, arraste para dentro do Data View desejado

movendo.jpg

Após mover, os campos poderão estar estranho como a imagem a seguir, basta clicar fora da região que normalizará:

campos.png

Renomeie os novos Fields conforme o desejado/padrão.

Muito importante seguir corretamente os passos abaixo para não perder o trabalho feito.

Salve o relatório (Ctrl + S) e feche o Rave Report.

Apague os três componentes criados no passo 3,

Abra novamente o Rave Report clicando no RvProject.

Selecione o Data View criado no passo 5 e apague-o.

Salve o relatório (Ctrl + S) e feche o Rave Report.

Passo 7: Carregando as alterações para o dfm

Na propriedade "ProjectFile" do componente RvProject, atribua o caminho do relatório que foi aberto anteriormente no Rave caso não esteja. Dê um duplo clique no dlg da propriedade "StoreRAV", clique em "Load" para que as alterações sejam carregadas, depois "Close".

image-1622125390531.png

Abra o RvProject e cheque se o(s) novo(s) campo(s) está(ão) no Data View após carregar as informações. 

Relatório rave

Adição de campos na interface gráfica do Rave

Para realizar esse processo, é necessário ter os campos adicionados no Data View do relatório.

Nota: Cada relatório tem sua própria construção, o relatório usado nessa página servirá como exemplo. 

Para que o campo adicionado no Data View seja exibido no relatório, será necessário adicioná-lo em suas respectivas regiões. 

No exemplo a seguir, o campo "DeducoesServicos"  será integrado ao relatório.

image-1622134887074.png

 

Localizar as regiões do relatório

Abra o Rave Reports e selecione o arquivo .rav que será alterado através do menu File > Open (caso o relatório já esteja aberto, não é necessário realizar esse passo). 

No menu lateral, expanda o componente Report Library e seus respectivos filhos até encontrar os DataBand Components. Cada um desses componentes, será responsável por uma região do relatório, identificada por nome. 

image-1622135604877.png

O campo deverá ser adicionado em cada banda que for necessário. Nesse exemplo, o campo "DeducoesServicos" será adicionado nas bandas "bSubCabecalho" e "dbItens".  

 

Adicionar componentes nas regiões

Expanda a banda e veja qual componente está sendo usado para os demais campos. 

image-1622136079385.png

Nesse exemplo, o componente utilizado é um Memo component. 

Através do menu de componentes, selecione o componente que será usado e coloque-o em sua respectiva banda. 

image-1622136469625.png

Ao adicionar o componente, o mesmo também deverá ser encontrado no menu lateral.

 

Configurar propriedades dos componentes 

Mude as propriedades do componente de acordo com os demais. 

image-1622140162106.png

A propriedade "FontMirror" receberá a família de componentes que ele pertence. 

A propriedade "Name" receberá o nome do componente.

É vital que todos os componentes adicionados tenham o prefixo referente à sua região (nesse caso, "ttlt") e que tenha o mesmo nome (DeducoesServicos) em todas as outras regiões para que funcione corretamente.   

Na propriedade "Text" é possível alterar o nome do campo que será exibido no relatório.  

 
Campos Data

Na inserção de campos Data, clique em "..." no dlg > Selecione o Data View do campo (DV_Relat) > Selecione o Data Field do campo (DEDUCOESSERVICOS) > Insert Field > o campo deverá aparecer no Data Text > Ok. 

image-1622139003451.png

Preencha as demais propriedades de acordo com outros componentes

image-1622139257698.png

Repare que apesar do prefixo ser diferente "dtlt", o nome do campo continua o mesmo "DeducoesServicos".

Após ter adicionado os campos necessários, salve o relatório.

 

Carregar alterações no relatório

No formulário (Delphi), dê F11 no componente RvProject e na propriedade "StoreRav" realize o load

image-1622139599469.png

Após realizar o load, execute o sistema e abra o relatório. O novo campo já poderá ser visualizado. 

image-1622140605116.png

 

Como mudar o nome do campo no 'Seleciona Campos' e o número de casas decimais exibidas no relatório  

Caso o relatório utilize um "Seleciona Campos", o nome do campo que será exibido pode ser alterado através da propriedade "FullName" do campo no Data View do Rave. A propriedade "DisplayFormat" pode ser usada para definir o número de casas que serão exibidas no relatório.

image-1622140713425.png

image-1622140853734.png

Relatório rave

Commit de alterações no relatório

Como realizar o commit do dfm das alterações feitas no Rave 

Não esquecer de realizar o load das alterações do relatório no RvProject antes de commitar 

As alterações realizadas no relatório ficarão no arquivo .dfm e no arquivo .rav

image-1622144455965.png

O arquivo .pas terá apenas as alterações realizadas no código. 

No arquivo .dfm, deverá ser realizado apenas o commit do "RaveBlobNew", com exceção da situação que o "ProjectFile" não existe ou está desatualizado, conforme a imagem Exceção. Caso não haja alterações propositais no dfm, o restante pode ser revertido.

image-1622144651788.png

image-1622144747969.png

Imagem Exceção:

66.png

O arquivo .rav e .pas podem ser commitados normalmente

Procedimentos Frequentes

Pendente melhorar

Procedimentos Frequentes

Criar um novo Documento

Um documento seria algo que envolve um Cadastro, Manutenção, DataModule e opcionalmente uma Pesquisa.

Ex.:
Clientes
Produtos
Documentos Fiscais (NFe, NFSe..)
Etc.

Para exemplo, usaremos a criação através da DLL, e como base o caso do Mantis 47332 onde cliente solicita a configuração de um CFOP específico por usuário.

O motivo de não ser feito direto na tela de usuários é o fato de ser customizado.

Não existe apenas uma forma de fazer, então o registrado aqui é uma sugestão.

Após fazer a cópia do trunk para uma pasta dentro do seu branch, navegue até a pasta Sistemas, copie o diretório, dê um copy to na dll em FireDac Skin ("Custom" + Sigla do módulo + Cliente), conforme as imagens abaixo:

1.png

2.png

Baixa seu código inteiro para darmos continuidade ao trabalho conforme modelo em Local 

É muito importante entender bem o precisa ser feito, para desenhar a tela e as tabelas da melhor forma.
Também é importante lembrar que formulários novos são feitos através de herança, então no caso de dúvida pergunte.

Planejamento desde caso:

Nomenclatura: Como será uma informação (Centro de Custos) padrão para usuário e futuramente podem vir a acrescentar novos campos, pensamos em algo no sentido de "Padrões do Usuário", isso reflete no nome das telas e da tabela nova.

Com nome definido, inicie desenhando os campos necessários para atender o cadastro, neste caso usuário já é cadastrado, falta informar o Centro de Custos para ele. 

Dica: Olhe alguns exemplos já existentes, isso ajudará muito.

Tela de Inclusão/Edição/Visualização

Crie herdando de "TFORM_EDIT" ou "TFORM_EDI1T", o que muda é o sentido da barra de ferramentas (Vertical ou Horizontal).
A propriedade Name do formulário costuma seguir alguns padrões, neste exemplo "FORM_" + Nome da tabela + "_EDIT".
A propriedade Caption do formulário, neste caso como se trata apenas do Centro de Custos, então chamaremos de "Centro de Custos por Usuário"

Baseado na tela de Usuários já existentes, puxamos algumas informações em ReadOnly apenas para usuário ter certeza que é o usuário correto que escolheu, e o campo que iremos cadastrar, a princípio a tela está:

3.png

Com a primeira tela feita, fica mais fácil de desenhar a tabela, que para este caso será "PadroesUsuarios":

4.png

 

Criar tabela:

Em alguns casos a criação estará na uit uCriaTabDll.pas dentro do fonte da DLL, em outro caso estará dentro de DllSource.pas. Caso não tenha em nenhuma das duas, então crie a uCriaTabDll.pas

A principio será necessário apenas a procedure "RegistraTabelas" e a function "Cria" + Nome da Tabela.

A procedure "RegistraTabelas" será para adicionar uma descrição da tabela nova dentro da tabela "Sistemas". Já a function ""Cria" + Nome da Tabela, é usada para adicionar na tabela "IntegRef" que por sua vez é responsável por simular as chaves estrangeiras do nosso banco.

Os métodos ficaram mais ou menos assim:

function "Cria"+ Nome da Tabela (no caso, CriaPadroesUsuarios):

image-1666808455191.png

Nessa function estamos criando a tabela desejada no banco por linhas de código.

Passamos na "LAuxilar.FieldDefs.Add" os seguintes parâmetros:

('Nome do campo', Tipo do campo, Tamanho de caracteres do campo, True se for uma PK);

Anotações importantes:

- O tipo do campo deve ser adicionado como "ft" + tipo do valor. Exemplo (Varchar no banco-> ftString);

- O ultimo parâmetro,  tem um valor default de "False", sendo assim, caso não seja passado, o campo não sera uma PK;

procedure RegistraTabelas: 

image-1666808277228.png

Nessa procedure, estamos fazendo o vinculo das chaves primarias (PK) e chaves estrangeiras (FK) do banco por linhas de código.

Passamos na "LMatVal" os seguintes valores: 

(tabela pai, tipo da checagem que será feita, tabela filha, chaves primarias na tabela pai, chaves estrangeiras da tabela filha, se vai ser eliminado da tabela pai, se vai ser eliminada da tabela filha e a sigla do sistema)

*Lembrando que para a criação da tabela seja efetuada é necessário que o sistema ao ser aberto passe pela tela de atualizações, ou seja, é necessário mudar no banco, na tabela "Global" + sigla do módulo para versões anteriores *

Explicando o DLG nos Edits:

Basicamente o componente dlg tem algumas propriedades específicas, elas são:

-TabelaPesq:

Seleciona a tabela que o dlg do edit vai buscar os dados, por exemplo: usuários;

-CampoPesq:

Deve ser inserido um campo da tabela selecionada no TabelaPesq para efetuar a busca no banco, por exemplo: NomeLog;

-DataSource:

Deve ser passado o DataModule.DataSource, por exemplo: DM_PADROESUSUARIOS.DS_MANUT;

-DataField:

O campo que será buscado no DataSource selecionado, por exemplo: NomeLog;

Exemplos do caso 0047322:

image-1666811653806.png       image-1666811687964.png            

Componente TKWRCriterios

o componente Critérios tem uma propriedade chamada "Criterios", ao dar dois cliques nele, se deparamos com a seguinte tela:

image-1666812697371.png

Ao clicarmos no único botão disponível, criamos um novo critério, ele será adicionado com índice 0 e com um nome padrão:

 

image-1666813084641.png

Ao clicar no item adicionado, na aba "Object Inspector" irão aparecer as propriedades daquele item, iremos alterar algumas delas, sendo elas as seguintes: 

image-1666813486423.png

Na propriedade Campo iremos adicionar o campo da tabela nova que criamos;

Na propriedade Chave iremos deixar marcado caso o campo seja uma PK e iremos desmarcar caso não seja;

Na propriedade Descrição é o título de onde os dados daquele campo vão ser inseridos;

Na propriedade Tabela vai ser inserido o nome da tabela que criamos;

Exemplo

No componente critérios do caso 0047332, as propiedades alteradas ficaram dessa maneira: 

image-1666814058421.png            image-1666814151185.png 

Devemos lembrar de adicionar também as chaves estrangeiras que estarão na nossa nova tabela, no exemplo citado, sendo os itens Usuarios.Nome e CenCust.Custo;

Podemos ver de maneira mais exemplificada como o critérios funciona realizando o debug do código, vamos lembrar que até o momento nenhuma query de SQL foi feita, porem ao usarmos o "MostraParams" no nosso DataModule com a QManut por exemplo:

image-1666868761074.png

iremos obter esse resultado ao voltar para o sistema: 

image-1666868934303.png

 

resumindo, o próprio componente ao ser configurado, monta essa query.

Evento OnSelect do Dlg:

Podemos utilizar a criação do Evento OnSelect do Dlg para escrever trechos que possam ser úteis na tela, por exemplo:

image-1666869196119.png

Nesse trecho estamos fazendo uma validação para verificar se o usuário selecionado já tem um centro de custo vinculado a ele naquela empresa. Caso ele não tenha, trazemos não só o Campo NomeLog para o Field, mas trazemos também o campo nome(que seria o nome completo) para o Edit de nome do usuário. Exemplificando na tela do sistema:

Ao clicar no Dlg do Edit

 

Nos deparamos com a tela de usuários:

image-1666869610498.png

Ao clicar em um usuário, ele já puxa o campo nome para o Edit:image-1666869655947.png

 

A mesma coisa acontece com o centro de custo:

image-1666869717195.png

 

Ao clicarmos em um centro de custo, ele puxa para a tela, tanto o centro de custo escolhido, como a descrição do mesmo:

image-1666869771450.png

Validações:

É importante lembrar que mesmo já esteja funcional, devemos validar algumas informações, como o botão gravar, o botão fechar, validar se o usuário selecionado já tem um centro de custo cadastrado. Para essas validações, podemos usar eventos, como o FormClose, OnClick, OnSelect entre outros, Por exemplo:

         

image-1666871182647.png                image-1666871221340.png

Aqui vemos que ao tentar selecionar um usuário que já tinha centro de custo cadastrado, então o sistema deve dar um alerta e impedir que eu continue o processo.

Algumas functions/procedures que podem ajudar nesse passo de validações, são por exemplo:

TVerificaCampos.Verificar();

image-1666871904221.png

Ela basicamente verificaquais campos do DataModule foram alterados, sendo passados como parâmetros o DataModule em si e uma variável para os campos alterados, declarada no "private" do tipo Variant, da seguinte forma:image-1666872062988.png

DataModule.DataSource.DataSet.Modified;

Faz a verificação se houve alteração nos campos do DataModule

image-1666872644069.png

TExisteRegistro.Verificar()

A função TExisteRegistro, faz a verificação se já existe um registro em uma tabela específica com campos específicos passados por parâmetros, sendo 4 ao total, os parâmetros que são passados os seguintes:

- Tabela que vai buscar;

-Os campos que serão verificados;

-Os conteúdos que serão buscados

-O tipo primitivo dos dados

Ficando no código dessa maneira:

image-1666873816785.png

DataModule.Gravar()

É inserido no BT_GRAVA da tela, basicamente salva no banco o que foi adicionado no DataModule, pode ser utilizado dentro de um try para facilitar a manipulação:

image-1666874201692.png

 

Tela de manutenção

A tela pai FORM_BROWSE já vem com os botões criados por herança porem as funções de cada botão devem ser adicionadas manualmente, pois diversas funções usam o DataModule individual  do documento, sendo assim, os botões não fazem nada quando criados.

image-1666956215506.png

Três desses botões (Novo, Edita e Visualiza), utilizam linhas de código praticamente iguais:image-1666956696867.png

 

Eles tem o mesmo código, pois abrem o mesmo formulário, a única mudança é em um dos parâmetros, mudando o Modo, usado da unit uAberturaTipo e a partir disso fazer as mudanças necessárias no Evento OnCreate da tela de cadastro, deixando informações em ReadOnly ou deixando todas com a propriedade Enabled como "False" para que o usuário apenas visualize as informações (AtVisualiza).

O botão de Excluir, é necessário muito cuidado pois muitas validações devem ser feitas antes de um registro ser excluído, como por exemplo, no caso da tela "Usuários", não é possível permitir que o SUPERVISOR seja excluído, então essa validação é usada:

image-1666957414238.png

Botão "Avançar" da tela de manutenção:

Para fazermos o botão de selecionar próximo na tela de manutenção funcionar, não é necessário montar uma query específica para isso, o próprio componente "CRITERIOS" faz isso para nós.

inicialmente temos que declarar a unit de manutenção no DataModule.

image-1667307605582.png

Após isso devemos clicar no componente "CRITERIOS" do DataModule e fazer algumas alterações na propriedade Criterios.

image-1667307713543.png

a tela que será aberta já foi documentada aqui porem vamos alterar algumas propriedades que não foram citadas ainda.

Primeiramente vamos selecionar o campo que queremos fazer a busca, no nosso exemplo, O PadroesUsuarios.NomeLog.

Agora vamos nos atentar as propriedades "Inicio" e "Fim"

image-1667308024563.png

 

Clicando na seta no fim do campo, serão exibidos todos os componentes da unit que foi declarada e a partir desse ponto, temos apenas que ligar o inicio e o fim ao mesmo componente.

image-1667308325432.png

e após isso, ao clicar no botão Avançar, na tela de manutenção, ele já faz a pesquisa sozinho com base nos componentes ligados ao componente que foi relacionado ao campo, não necessitando a montagem de uma query só pra isso.

Após fazer esses passos, a unit de manutenção, pode ser retirada das declarações de uses do DataModule.

 

 

 

Procedimentos Frequentes

Criar ou editar tabela

No sistema:
Se for específica do módulo, unit CriaTabEsp.pas, caso contrário só CriaTab.pas pois é global; Acha a procedure que monta a tabela, exemplo "CriaOrcam" e faz a edição.

Se for específica do módulo, unit "uMatrizAlt" + Sigla do módulo Verifica no final um exemplo, copie e adapte para sua alteração.

Unit "uAtualizaCampoNulo" + Sigla do módulo; Verifica no final um exemplo, copie e adapte para sua alteração.

 

Em DLL:

DLL nova ou que não tenha nenhuma criação de tabela ainda:
Por questão de estrutura sugiro copiar uma "uCriaTabDLL" de alguma DLL que já existe

Criar uma function respeitando a assinatura "Cria" + NomeTabela
Na implementação da function, é a mesma estrutura de criação de tabela nativa do sistema

Com o nome da function já decidido, adicionar no .dpr para que seja chamado, exemplo " CriaConfDll Name 'CriaConfDll' "
Em DLLSource, dentro da function "RegistraTabelas":
- AtualizaTabelaSistemas: colocar conforme a estrutura do "TProcuraRegistro"
- AtualizaTabelaIntegRef: Caso necessário aumentar o tamanho do array, preencher ele conforme a estrutura de "chave primaria" e "chave estrangeira"

Procedimentos Frequentes

Criar nova DLL

Uma DLL é um arquivo utilizado para a criação de Customizações

Neste exemplo utilizaremos a criação de uma DLL para a empresa Matricer, e como base o caso do Mantis 47207

Criação da DLL

Após fazer a cópia do trunk para uma pasta dentro do seu branch, navegue até a pasta Sistemas, copie o diretório, depois vá até "outros/DLLs/Dlls Vazias" e dê um copy to na dll do módulo que deseja utilizar, conforme as imagens abaixo:


image-1669820132059.png

teladllvaziafontegrande.png

Posteriormente vá até o local onde está sua DLL vazia e renomeie ela de acordo com o padrão:

"Custom" + Sigla do Módulo + Nome do Cliente

image-1669825865020.png

Baixe seu código inteiro para darmos continuidade ao trabalho conforme modelo em Local.

Modificações para o funcionamento da DLL

Na pasta da Custom haverá um arquivo chamado DllSource.pas. Nele será preciso declarar o nome do Processo da DLL que será utilizado na função ExisteProcesso.

image-1669827736790.png

image-1669827757254.png

image-1669827876791.png

Exemplo de utilização da função ExisteProcesso:

image-1669826128967.png

Ao adicionar em "const ProcessoDestaDLL", é necessário colocar um "|" (pipe) e depois o nome do Processo da DLL em letras maiúsculas

Também é necessário ir na pasta project e no arquivo (Custom + Sigla do Módulo).dpr e inserir o nome da DLL que aparecerá no canto inferior direito da tela do Módulo.

image-1669827639023.png

image-1669826269892.png

image-1669828093596.png

Subindo a DLL para a pasta de DLLs

Após realizar as alterações na DLL, é necessário subir ele para a pasta EmFireDac Skin.

Existem duas maneiras de realizar este processo.

Método 1: 

Vá até a pasta EmFireDac Skin (outros/DLLs/EmFireDac Skin) e copie o caminho dela.

image-1669904134666.png

Depois vá até onde está localizada sua pasta da Custom e de um Copy To dela para dentro da pasta EmFireDac Skin.

image-1669904407842.png

Método 2:

Primeiramente realize o Checkout da pasta EmFireDac Skin para a sua máquina local.

image-1669904584039.png

Posteriormente copie a sua pasta da Custom para dentro da pasta EmFireDac Skin.

image-1669904663665.png

image-1669904722795.png

Dê um Add na sua pasta da Custom.

image-1669904770617.png

image-1669904786111.png

Por fim, realize o Commit para a pasta EmFireDac Skin.

image-1669904910049.png

image-1669904930043.png

 

Executando sistema com a DLL

Para executar o sistema, deverá mudar as configurações em 'Project > Options'. Alterar as seguintes configurações: 

image.png

 

image.png

Após configurar, realizar o build e executar.

Instalação e atualização do Acbr para a SuperSoft

A pasta ACBr foi criada em nosso repositório para evitar quebras quando houver grandes atualizações. Também para ter documentado e versionado os ajustes que fazemos para atender nossa demanda, geralmente envolvendo provedores de NFSe.

https://wiki.supersoft.com.br/svn/desenvolvimento/outros/ACBr

Quando houver necessidade de alterar registro relativo a cidades, devem ser alterados os seguintes arquivos “ACBrNFSeXServicos.ini” dentro de “Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX” e "Cidades.ini" dentro do local "ACBr/Exemplos/ACBrDFe/ACBrNFSe/ArqINI", executando o
“Compila_RES.BAT.bat “, e commitar os arquivos “ACBrNFSeXServicos.ini”, “ACBrNFSeXServicos.res” e "Cidades.ini" com as alterações.

AtualizaCidades.png

AtualizaCidadesINI.png

 

No commit não esquecer de apontar qual caso gerou essa necessidade e o que foi alterado.
A nova ferramenta que seria essa versão “X”, não necessita de um arquivo com as cidades junto com a pasta de instalação, o
arquivo “.res” ao gerar o exe já faz isso.

Em alguns casos não se faz necessário reinstalar o ACBr, mas em situações que é necessário utilizar o "ACBrInstall_Trunk2.exe" e se atentar a seguintes opções que devem ficar desmarcadas:

DesmarcaCapicom.png

Forma simples de atualizar nosso ACBr:
Baixar original de svn://svn.code.sf.net/p/acbr/code/trunk2 .
Passar as alterações nossas para lá. *
Substituir o arquivo oculto ".svn" da pasta original da ACBr, pelo ".svn" nosso.
Commitar conferindo o endereço destino e se nossas alterações não foram retiradas.

SvnOculto.png

*Temos atualmente alterações nossas nas Units:
/ACBr/Exemplos/ACBrDFe/ACBrNFSe/ArqINI/Cidades.ini
/ACBr/Fontes/ACBrDFe/ACBrNFSe/PCNNFSe/pnfsNFSeG.pas
/ACBr/Fontes/ACBrDFe/ACBrNFSe/PCNNFSe/pnfsNFSeW_CONAM.pas

Adicionar clique direito do mouse nos botões laterais do sistema

Esse guia tem o intuito de mostrar os processos para a adição de um PopUpMenu de cadastro e manutenção nos botões laterais.

 

exemplo sem menu.png                             resultado final melhoria.png

 

Alterações feitas na unit FormPri:

Na procedure AdicionarBotao, foi adicionado um PopupMenu que recebe 'nil' ao ser criado, para que não quebre os botões que não receberem o PopUp. Segue o exemplo do que foi feito:

assinatura procedure AdicionarBotao.png

Na procedure AdicionarBotao, a linha que cria o botão nas laterais recebe a propriedade de um PopupMenu e foi adicionado na chamada da procedure, o parâmetro do PopUpMenu.

procedue AdicionarBotao.png

Os passos até agora, não precisam ser refeitos, pois a FormPri é uma tela pai, logo, as outras telas herdam dela. Foi apresentado apenas para informação do que foi feito.

 

Na unit Princip:

Na procedure CriarBotoes, logo abaixo da declaração dos ícones usados nas laterais, é necessário criar uma função que vai receber o MenuItem do cadastro e da manutenção e vai retornar um PopUpMenu.

Nessa função é feita a criação dinâmica tanto do PopUp como dos itens dele para que não sejam valores fixos e sim, de acordo com o clique do mouse.

A seguir está um exemplo de como a função pode ser feita: 

função CriarPopupMenu.png

Ainda no Princip, devemos passar como parâmetro da procedure AdiconarBotao, a nossa função criada no passo anterior e dentro dos parâmetros da nossa função, passar o MenuItem do cadastro e da manutenção do botão específico.

A seguir, está uma demonstração de como deve ser adicionado os parâmetros na função AdicionarBotao, para que os botões, assim que criados, possam chamar o PopUp do cadastro e da manutenção dele mesmo.

chamada da função CriarPopupMenu.png

 

Lembrando que essa implementação não vai quebrar as outras telas que não utilizarem a melhoria pois foi feita de maneira dinâmica, então não implementa-la é uma opção, porém por ser uma melhoria interna, é interessante utiliza-la.

 

 

Instalar/Reinstalar PK_Todos

Requisitos:

Variável de ambiente deve estar como "C;\Codigo Fonte".

image-1685964372645.png


Pasta "C;\Codigo Fonte" estar atualizada.

 

Acessar "C:\Codigo Fonte\Componentes Instalados\SS\Fontes\PK_Todos.dpk", abrir com Delphi.

Caso esteja instalado, fazer o Uninstall.

image-1685964247961.png

 

Para instalar, faça a sequencia Build -> Compile -> Install.

Volte a variável de ambiente ao original.

image-1685964417139.png

Feche o Delphi sem salvar as alterações.