06 de outubro de 2011
Autor: Blog do Curso Técnico em Informática | Publicado: 2011-10-06T16:06:00-07:00

Hoje na nossa penúltima aula de Delphi, o professor nos ajudou a fazer um arquivo com os passos para fazermos um sistema de cadastro, como realizar as conexões com o banco, como criar um formulário a partir do modelo, com os passos de como criar um modelo, como criar os menus, como criar um Lookup e como gerar relatórios no Rave.  
_________________________________________________________________________


PASSOS PARA CRIAÇÃO DE UM SISTEMA DE CADASTRO EM DELPHI

Criando um modelo
File -&gt; new – Form;
Salvar o formulário com o nome da unit a untmodelo e o name do formulário igual a frmmodelo;
Colocar o speedButton para cada ação do sistema (novo, editar, salvar, excluir, cancelar e fechar);
Colocar um pagecontrol;
Adicionar duas abas, clicando com o botão direito do mouse no pagecontrol e new page.
Colocar um nome para cada pagina criada, clicando na parte branca de cada pagina e no object inspector, na propriedade do caption colocar: colocar na primeira pagina coloque o nome de consultas e na segunda pagina coloque o nome de cadastro;
Pressione ctrl + s a cada 5 segundos;
Colocar um dbgrid dentro da pagina consultas;
Colocar um datasource em seu formulário ( pode ser colocado em qualquer lugar do formulário);
Salve este documento (ctrl + b); 
Selecione o dbgrid na propriedade data source selecione o name do componente data source adicionada anteriormente;
Adicione um labeledit na aba de consulta e coloque o caption desse labeledit de: digite o texto da busca;
Ao lado do labeledit adicione um label com o name de ibltitulo;
Clique duas vezes sobre o labeledit e coloque o código do seu sistema de agenda;
Com o dbgrid selecionado, no object inspector, na aba events, vá até o evento on title click e clique duas vezes ao lado dele ( na parte em branco);
Após isso, você será redirecionado para a parte do código, local onde você colocara o código que você tem no seu sistema de agenda (é código para ordenar os registros do dbgrig);
Vá ao design do formulário e coloque os códigos para cada um dos speedbutton, conforme você tem no seu sistema de agenda;
Realizar as conexões com o banco
File -&gt; new -&gt; other -&gt; Delphi files -&gt; datamodule;
Salve esse datamodule com o name da unti igual a untacessodados e o name do datamodule como  dmacessodados;
Adicione o componente sqlconection;
Coloque o name desse componente para sqlcon;
Com o componente selecionado, na propriedade conectionname selecione ibconection;
Coloque a propriedade loginprompt para false;
Clique nos 3 pontinhos(...) da propriedade params;
Nessa nova tela que abriu, configure o caminho do banco na propriedade database (é o caminho físico de onde se encontra o seu arquivo fdb ou gdb);
Coloque também o username e o password do firebird;
Pressione ok;
Agora no componente sqlconection coloque para true a propriedade connected;
Colocar o componente sqldataset;
Coloque o name desse componente como SQLtabela (tabela representa o nome da tabela especifica do banco de dados. Ex: sqlcidade, sqlclientes);
Na propriedade commandtext, clique nos 3 pontinhos(...) e coloque a sql de select da tabela desejada;
Clique em ok;
Configure a propriedade sqlconection, selecione o name do componente sqlcon;
Adicione o componente datrasetprovider;
Coloque o name desse componente para dsptabela (ex: dspcidades, dspcliente);
Na propriedade dataset selecione o name do componente que tem o prefixo SQL + o nome da tabela especifica (ex: sqlcidades);
Adicione o componente clientdataset;
Coloque o name desse componente para cdstabela(ex: cdscidades, cdsclientes);
Na propriedade providername selecione o nome do componente que tem prefixo de dsp + o nome da tabela especifica (ex: dspcidades);
Coloque para true a propriedade active;
Clique duas vezes sobre o componente cdstabela;
Nessa nova tela que abrir, clique com o botão direito do mouse e clique em add all fields;
Nessa tela de fields, voce pode configurar algumas propriedades de cada um dos campos, por exemplo: displaylabel coloque o texto que você quer que apareça no titulo de cada coluna do dbgrid , outro exemplo é o displaywidth que é configurado o tamanho da coluna do campo especifico no dbgrid e também o tamanho do edt na aba de cadastro; 
Feche essa telinha dos fields;
OBS.: para cada tabela do banco de dados, voce terá que adicionar esses três componentes: sqldataset, datasetprovider, clientdataset;
OBS2.: sempre verifique se a propriedade active dos componentes com prefixo CDs está como true;
Criando um formulário a partir do modeloFile -&gt; new -&gt; other -&gt; inheritlabe itens-&gt; frmmodelo;
Salve esse formulario com o nome da unti de unttabela (ex: untcidades, untclientes) e o nome do formulario de frmtabela (ex: frmcidades, frmclientes);
Relacionar esse formulário com o datamodule, para isoo pressione ALT + F11 e selecione a opção untacessodados;
Nesse formulário, selecione o componente datasource e na propriedade dataset seleciona a opção que tem o prefixo CDs + nome da tabela especifica (ex: cdscidades);
Se tudo deu certo, terá que aparecer no dbgrid todas as colunas da tabela especifica, juntamente com registro que já estão inseridos no banco;
Colocando os campos para cadastroVá até o datasource dmacessodados;
Clique duas vezes no CDs da tabela que deseja realizar o cadastro;
Deixe essa tela que abriu após o duplo clique aberto;
Volte novamente para o formulário especifico para a realização do cadastro;
Clique na aba cadastro;
Com a telinha dos Fields aberto (tela que abriu quando você clicou duas vezes no CDS) selecione cada campo e arraste para o formulário.
Criando os menusNo formulário principal (frmprincipal) adicione o componente mainmenu;
Clique duas vezes sobre esse componente e coloque a descrição do menu no local desejado;
Clique duas vezes sobre esse menu criado, onde será redirencionado para o local de código;
Pressione ALT + F11 para relacionar o formulário principal com o formulário que deseja chamar;
Selecione a unit do formulário especifico (ex: untcidades) e clique em ok;
Digite o nome do formulário especifico seguido de um ponto mais showmodal (ex: frmcidades.showmodal);
Agora é só testar;
Criando um lookupLá no datamodule, clique duas vezes no cds se deseja criar um lookup ( esse lookup deve ser criado todos os cds de tabelas que possuem chave estrangeira. Ex: no cdscliente será criado um lookup para trazer todas as cidades já cadastradas).
OBS: antes de criar esse lookup é necessário já existir o cds da tabela que possui todos esses registros (ex: cdscidades já deve estar funcionando);
Com a telingha dos fields aberto, clique com o direito do mouse e selecione new field;
No campo name, coloque o nome desse lookup(ex: lkpcidades);
No campo type, selecione a opção string;
Na propriedade size, coloquei o numero de caracteres que foi estipulado para o campo que você quer exibir depois na tela. Esse valor, você deve procurar lá na tabela que possuem todos os registros que serão exibidos. Ex: quero mostrar todos os nomes das cidades já cadastradas, então tenho que ir ate a tabela cidades, ver quantos caracteres foi definido para o campo do nome da cidade (ex: varchar de 100, então no campo size você colocara o numero 100);
Na opção field type, marque a opção lookup;
No campo key fileds, selecione o campo que é a chave estrangeira (ex: cer);
No campo dataset selecione o componente que tem o prefixo cds + o nome da tabela que possui todos os registros que poderei selecionar (ex: cdscidades); 
No campo lookup Keys, selecione qual é a chave primaria dessa outra tabela (ex: CEP é a chave primaria da tabela de cidades);
No campo result Field, selecione a opção que deseja mostrar na tela de cadastro (ex: cidade, pois é o campo em que está cadastrado o nome da cidade);
Clique e ok;
Na telinha de fields, selecione esse lookup que foi criado, e configure as propriedades de displaylabel e displaywidth;
Mantenha essa telinha de fields aberto;
Abra novamente o formulário de cadastro que terá esse lookup. Ex: frmclientes;
Agora selecione o lookup na telinha de fields e arraste para a tela de cadastro;
Se tiver o campo onde teria que escrever o código pode excluí-lo, pois não será mais necessário;
Relatórios no raveLá no datamodule, adicione o componente rvproject;
Adicione o componente rvsystem;
Adicione o componente rvdatasetconection;
Coloque o name de rvdatasetconection para rvdstabela (tabela é o nome da tabela que deseja fazer o relatório);
Na propriedade dataset selecione o nome do componente com prefixo de cds que desejas fazer o relatório. Ex: cdscidades;
Vá até o menu tools -&gt; rave reports designer;
Lá no rave, vá em files -&gt; save as;
Salve o arquivo dentro da pasta do projeto, ou seja, onde se encontram todos os arquivos do sistema e coloque como o nome de relatórios.rav;
Va ate o menu file-&gt; new data object -&gt; direct data view ( barrilzinho roxo) -&gt; selecione o rvds que deseja buscar os dados. Ex: rvdscidades;
Va ate o menu tools -&gt; report wizards -&gt; simple table -&gt; selecione qual dataview que possui os dados do relatório -&gt; next -&gt; marque quais campos que deseja mostrar no relatório -&gt; next -&gt; coloque a ordem que os campos fiquem no relatório -&gt; coloque o titulo do relatório -&gt; configure o tamanho e cores dos textos do relatório -&gt; generate;
No lado direito do rave, no reports library, selecione a pagina que foi gerada e coloque um name para ele ex: relcidades;
Voltando para o Delphi, lá no datamodule, selecione o componente rvproject e na propriedade projectfile coloque o nome que voce deu ao salvar aquele arquivo do rave ex: relatórios.rav;
Para chamar o relatório a partir do Delphi, veja o exemplo que foi feito na tela de consulta de dados pessoais do sistema de agenda;
The end!