Bibliotecas Gráficas

De UniWiki
Revisão de 17h11min de 15 de setembro de 2014 por Adão (Discussão | contribs) (Componentes)
Ir para: navegação, pesquisa

Desenvolvendo interfaces com a Biblioteca Uniware

Esse guia tem por funcionalidade auxiliar o desenvolvedor na programação de interfaces utilizando a biblioteca da Uniware.

É importante observar que esse artigo não aborda a instalação dos componentes gráficos. Para isso, visite Instalação Delphi



Criando Interfaces

O capítulo a seguir identifica possíveis problemas que o programador pode encontrar ao desenvolver suas primeiras interfaces. Relevando as propriedades principais:

Incluindo telas da biblioteca

LibR04.png

  • Para incluir telas da biblioteca é necessário incluir os seguintes componentes na UFMain que estão localizados na aba R04(como na imagem acima):
 UCS, UPSCad, UPSSel e UPSRel(se necessário).
  • Primeiramente é necessário nomear os componentes adicionados nos padrões:
  Ex no CRUD de Municipio
     USC    - muni
     UPSSel - muniSel
     UPSCad - muniCad
     UPSRel - muniRel 
  • Ligar o UPSCad, o UPSSel e o UPSRel ao UCS, indo na propriedade CS de cada um destes componentes e colocando o nome do UCS.

Incluindo tela FBaseSel

  1. Após incluir os componentes na UFMain, ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseSelR03 e clicar em Ok.
  2. A Unit, ao ser criada, possui uma parte do código assim:
    var
    Form1: TForm1;
  3. No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
  4. Ao apagar o código acima de uma unit, remover do projeto UNILAB_BETA a criação automática da interface, como na linha:
    Application.CreateForm(TForm1, Form1);
  5. Na Unit criada, no campo Name ajustar para UF+NomeDaFuncionalidade+Sel.
    • Colocar no Form o mesmo nome retirando apenas o U do inicio, ficando como F+NomeDaFuncionalidade+Sel.
  6. No form criado terá um componente SelData, na propriedade CallCS e CallPS preencher com o mesmo nome do UCS e UPSCad criado na #UFMain.
  7. Na UNIT da SEL, dar USES no implementation da UFMain para poder se conectar ao banco de dados.
  8. No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
  9. Na propriedade SQL passar o SELECT da tabela que foi criada no banco de dados para a tela deste cadastro.
  10. Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos do dataset da tabela.
  11. Ao selecionar um FIELD de um campo do dataset irá listar as seguintes propriedades:
    • Nome Default: Q concatenado do mesmo nome da coluna do banco;
    • Campo: Qual campo do banco ele representará;
    • ChavePrimaria: Identifica a PK da tabela;
    • Edicao: Indica o componente visual que edita esse valor;
    • Filtra: Habilita o campo a ser uma chave no botão Filtra;
    • NaNavegacao: Define se a coluna aparecerá na Grid;
    • Ordena: Permite o usuário Ordenar os resultados utilizando a coluna como parâmetro, é obrigatório no mínimo 1 dos campos ser True;
    • PreencheChave: Em uma situação mestre-detalhe, esse parâmetro permite que seja inserido no campo a chave primária do mestre;
    • Procura: Habilita a procura de valores na coluna pelo botão Procura;
    • Sequencial:Quando for um número sequencial (auto-incremento) informar o nome da tabela a qual o campo pertence;
    • Tabela: Indica a qual tabela o campo pertence;
    • TabelaAlias: Preenchido caso a tabela possua alias;
    • Titulo: Valor a ser apresentado no cabeçalho da coluna da DBGrid;
    OBS: O ideal seria ajustar os títulos das colunas para ficarem corretas quando forem adicionadas;
  12. Para adicionar todas as colunas na Grid, clicar com o botão direito no componente CAD e escolher a opção Colunas da Grid de Procura.
  13. Para incluir apenas uma coluna, selecionar a DBGrid, dar um duplo clique na propriedade Columns e depois clicar no botão Add New (Ins).
  14. Após esse processo deve-se ligar a nova tela ao menu, da seguinte maneira:
  15. Criar o menu para o novo cadastro;
  16. Dar um duplo clique no menu criado e utilizar a chamada para a tela SEL da seguinte maneira:
    UMenuCall('NomeDoUCS','NomeDoUPSSel');
  17. No evento OnFormType do componente UPSSel(na UFMain) colocar o result da função recebendo o form da Sel.
    Ex: Result := TFPediSel;

Incluindo tela FBaseCad

  1. Ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseCadR03 e depois clicar em OK.
  2. A Unit, ao ser criada, possui uma parte do código assim:
    var
    Form1: TForm1;
  3. No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
  4. Ao apagar o código acima de uma unit, remover do projeto UNILAB_BETA a criação automática da interface, como na linha:
    Application.CreateForm(TForm1, Form1);
  5. Na Unit criada, no campo Name ajustar para UF+ NomeDaFuncionalidade +Cad.
    Colocar no Form o mesmo nome retirando apenas o U do inicio, ficando como F+ NomeDaFuncionalidade +Cad.
  6. Na UNIT da SEL, dar USES na UFMain para poder se conectar banco de dados.
  7. No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
  8. Na propriedade SQL passar o SELECT para a tabela que foi criada no banco de dados para a tela deste cadastro.
  9. Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos da tabela.
  10. Para incluir campos nesta tela, preferencialmente utilizar os componentes da biblioteca(aba R03).
  11. Na propriedade Name do campo adicionado, o mesmo deverá conter o mesmo nome das colunas criadas no banco de dados.
    Ex: Campo "Nome":TUEdit na tela MuniCad, irá ficar como CNOMEMUNI.
  12. Na UFMain, no evento OnFormType do componente UPSCad, colocar o result da função recebendo o form da Cad.
    Ex: Result := TFPediCad;

Incluindo tela FBaseRel

  1. Ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseRelM02R04 e depois clicar em OK.
  2. A Unit, ao ser criada, possui uma parte do código assim:
    var
    Form1: TForm1;
  3. No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
  4. Ao apagar o código acima de uma unit, remover do projeto UNILAB_BETA a criação automática da interface, como na linha:
    Application.CreateForm(TForm1, Form1);
  5. Na Unit criada, no campo Name ajustar para UF+NomeDaFuncionalidade+Rel.
    • Colocar no Form o mesmo nome retirando apenas o U do inicio, ficando como F+NomeDaFuncionalidade+Rel.
  6. Na UNIT da REL, no implementation, dar USES na UFMain para poder se conectar ao banco de dados.
  7. No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
  8. Na propriedade SQL passar o SELECT da tabela que foi criada no banco de dados para a tela deste cadastro.
  9. Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos da tabela.
  10. Na aba R03, acrescentar o componente SuReportData.
  11. No evento OnClick do botão BImprimir realizar os tratamentos dos filtros aplicados na tela.
  12. Ex no evendo OnClick.
    BImprimirClick.png
  13. OBS: Se não for utilizar o combo ordem na tela, comentar a linha inherited desta procedure pois esta função realiza tratamentos do combo.
  14. Na UFMain, no evento OnFormType do componente UPSRel, colocar o result da função recebendo o form da Cad.
    Result := TFPediRel;
  15. Criar o menu para o novo relatório na UFMain
  16. Dar um duplo clique no menu criado e utilizar a chamada para a tela REL da seguinte maneira:
    UMenuCall('NomeDoUCS','NomeDoUPSSel');

Inserir o componente SUReportData da R04; No evento OnStartReport é onde é criado as configurações de cabeçalho e as colunas. Exemplo:




No evento OnNewPage é feita a impressão do cabeçalho. Seguindo o Exemplo:







Onde o result deve ser a posição vertical para impressão do corpo. O evento OnNewPage sempre será executado quando iniciar uma nova pagina. A idéia é utilizá-lo para impressão de cabeçalhos da página.

No evento OnPage é onde é feito o loop da impressão. Cada página será impressa até que seu conteúdo atinja a posição marcada na propriedade EndPosition, então o antes de imprimir o comando que extrapolou o EndPosition é chamado o OnEndPage, é criada uma nova página, é chamado o OnNewPage e só depois este comando é impresso na página.

O evento OnEndPage é chamado antes de gerar uma nova página e no final do relatório, seu propósito é fazer a impressão do rodapé da página. O evento OnEndReport é chamada uma vez depois do último OnEndPage do relatório.

Criação de Tabelas

Na criação de tabelas no banco de dados para as telas da biblioteca deverão conter os seguintes atributos:
  • ULIBDINC –> DATETIME data da inclusão do registro.
  • ULIBUINC –> VARCHAR(20) usuário da inclusão do registro.
  • ULIBDALT –> DATETIME data da alteração do registro.
  • ULIBUALT –> VARCHAR(20) usuário da alteração do registro.
  • ULIBRELA –> NUMERIC(9,0) sequencial de controle de alteração simultânea. Quando um usuário carrega um registro para alteração, carrega esse ULIBRELA junto, quando for salvar a alteração, consulta novamente no banco se o ULIBRELA ainda é o mesmo numero, se não for, resulta em erro de registro alterado por outra estação, senão incrementa o numero do ULIBRELA e salva.
Em tabelas que realizarão transmissões deverão ter os atributos seguintes atributos:
  • CTRANSTRAN –> VARCHAR(1) Utilizado em registros que são alterados apenas na central e transmitidos para o posto. O registro é incluído com N nesse campo e quando o registro é transmitido ele muda para S, ao tentar excluir o registro, se este estiver com S não permite.
  • CCENTRALTRAN –> VARCHAR(9) Controle de transmissão da central. Deve ser atualizado sempre que um registro é alterado para que ele entre no próximo pacote de transmissão para o posto.
  • CPOSTOTRAN –> VARCHAR(9) Controle de transmissão do posto. Deve ser setado como E na inclusão ou M na alteração para marcar os registros para ser transmitido

Componentes