Bibliotecas Gráficas
Índice
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
- 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
- Após incluir os componentes na UFMain, ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseSelR03 e clicar em Ok.
- A Unit, ao ser criada, possui uma parte do código assim:
- var
- Form1: TForm1;
- No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
- 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);
- 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.
- No form criado terá um componente SelData, na propriedade CallCS e CallPS preencher com o mesmo nome do UCS e UPSCad criado na #UFMain.
- Na UNIT da SEL, dar USES no implementation da UFMain para poder se conectar ao banco de dados.
- No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
- Na propriedade SQL passar o SELECT da tabela que foi criada no banco de dados para a tela deste cadastro.
- Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos do dataset da tabela.
- 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;
- 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.
- Para incluir apenas uma coluna, selecionar a DBGrid, dar um duplo clique na propriedade Columns e depois clicar no botão Add New (Ins).
- Após esse processo deve-se ligar a nova tela ao menu, da seguinte maneira:
- Criar o menu para o novo cadastro;
- Dar um duplo clique no menu criado e utilizar a chamada para a tela SEL da seguinte maneira:
- UMenuCall('NomeDoUCS','NomeDoUPSSel');
- 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
- Ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseCadR03 e depois clicar em OK.
- A Unit, ao ser criada, possui uma parte do código assim:
- var
- Form1: TForm1;
- No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
- 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);
- 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.
- Na UNIT da SEL, dar USES na UFMain para poder se conectar banco de dados.
- No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
- Na propriedade SQL passar o SELECT para a tabela que foi criada no banco de dados para a tela deste cadastro.
- Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos da tabela.
- Para incluir campos nesta tela, preferencialmente utilizar os componentes da biblioteca(aba R03).
- 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.
- 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
- Ir em File > New, clicar na aba UNILAB_BETA, selecionar FBaseRelM02R04 e depois clicar em OK.
- A Unit, ao ser criada, possui uma parte do código assim:
- var
- Form1: TForm1;
- No projeto essa parte é desnecessária, visto que o FMain realiza a instanciação das interfaces de outra forma.
- 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);
- 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.
- Na UNIT da REL, no implementation, dar USES na UFMain para poder se conectar ao banco de dados.
- No componente UQuery preencher na propriedade UDataBase com FMain.UDB.
- Na propriedade SQL passar o SELECT da tabela que foi criada no banco de dados para a tela deste cadastro.
- Ao dar um duplo clique no componente UQuery abrirá a lista com todos os campos da tabela.
- Na aba R03, acrescentar o componente SuReportData.
- No evento OnClick do botão BImprimir realizar os tratamentos dos filtros aplicados na tela.
- Ex no evendo OnClick.
- 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.
- Na UFMain, no evento OnFormType do componente UPSRel, colocar o result da função recebendo o form da Cad.
- Result := TFPediRel;
- Criar o menu para o novo relatório na UFMain
- 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