Este artigo mostra como criar uma agenda bem simples com o Lazarus, uma IDE para FreePascal. Além de ser uma boa dica para treinar programação em Pascal, usando arquivo em memória, array, record, variáveis, procedure, etc e tudo em modo gráfico.
Agora vamos criar os eventos para movimentar uma posição para
cima e para baixo dentro do array, desta forma navegando dentro
do registro da agenda. Clique sobre o botão "<Anterior" e na
aba Events crie a procedure TForm1.BtAnteriorCLICK, editando-a
confirme código abaixo:
procedure TForm1.BtAnteriorCLICK(Sender: TObject);
begin
{se posição for maior que um subtrai um}
if Base.PsReg > 1 then
{retorna uma posição no array}
Base.PsReg:=Base.PsReg-1;
{atribui ao TEdit conteúdo do array}
EditCod.text:=vAgenda[Base.PsReg].Cod;
EditNome.text:=vAgenda[Base.PsReg].Nome;
EditEnde.text:=vAgenda[Base.PsReg].Ende;
EditComp.text:=vAgenda[Base.PsReg].Comp;
EditTelR.text:=vAgenda[Base.PsReg].TelR;
EditTelS.text:=vAgenda[Base.PsReg].TelS;
EditTelC.text:=vAgenda[Base.PsReg].TelC;
EditMail.text:=vAgenda[Base.PsReg].Mail;
end;
Faça o mesmo procedimento com o botão "Próximo >" e crie a
procedure TForm1.BtProximoCLICK, conforme código abaixo:
procedure TForm1.BtProximoCLICK(Sender: TObject);
begin
{se posição for menor que quantidade soma um}
if Base.PsReg < Base.QtReg then
{avança uma posição no array}
Base.PsReg:=Base.PsReg+1;
{atribui ao TEdit conteúdo do array}
EditCod.text:=vAgenda[Base.PsReg].Cod;
EditNome.text:=vAgenda[Base.PsReg].Nome;
EditEnde.text:=vAgenda[Base.PsReg].Ende;
EditComp.text:=vAgenda[Base.PsReg].Comp;
EditTelR.text:=vAgenda[Base.PsReg].TelR;
EditTelS.text:=vAgenda[Base.PsReg].TelS;
EditTelC.text:=vAgenda[Base.PsReg].TelC;
EditMail.text:=vAgenda[Base.PsReg].Mail;
end;
Saltando para o primeiro registro. Crie a procedure
TForm1.BtPrimeiroCLICK e edite o código:
procedure TForm1.BtPrimeiroCLICK(Sender: TObject);
begin
{vai para posição 1 do array}
Base.PsReg:=1;
{atribui ao TEdit conteúdo do array}
EditCod.text:=vAgenda[Base.PsReg].Cod;
EditNome.text:=vAgenda[Base.PsReg].Nome;
EditEnde.text:=vAgenda[Base.PsReg].Ende;
EditComp.text:=vAgenda[Base.PsReg].Comp;
EditTelR.text:=vAgenda[Base.PsReg].TelR;
EditTelS.text:=vAgenda[Base.PsReg].TelS;
EditTelC.text:=vAgenda[Base.PsReg].TelC;
EditMail.text:=vAgenda[Base.PsReg].Mail;
end;
Saltando para o último registro. Crie a procedure
TForm1.BtUltimoCLICK e edite o código:
procedure TForm1.BtUltimoCLICK(Sender: TObject);
begin
{vai para o ultimo registro}
Base.PsReg:=Base.QtReg;
{atribui ao TEdit conteúdo do array}
EditCod.text:=vAgenda[Base.PsReg].Cod;
EditNome.text:=vAgenda[Base.PsReg].Nome;
EditEnde.text:=vAgenda[Base.PsReg].Ende;
EditComp.text:=vAgenda[Base.PsReg].Comp;
EditTelR.text:=vAgenda[Base.PsReg].TelR;
EditTelS.text:=vAgenda[Base.PsReg].TelS;
EditTelC.text:=vAgenda[Base.PsReg].TelC;
EditMail.text:=vAgenda[Base.PsReg].Mail;
end;
[11] Comentário enviado por ic3hawk em 28/07/2004 - 09:06h
Cara,
Realmente o seu artigo é muito bom. No entanto, segui os seus passos ai corretamente. No entanto, no momento em que eu vou compilar, QUALQUER COISA, ele dá um erro.
Ele diz que não consegue encontrar o arquivo.. -lgdk_pixbuf
Eu procurei no google no entanto nao encontrei. Se algum puder me dar uma mãe agradeço.
[13] Comentário enviado por fabmas em 19/08/2004 - 13:20h
Muito bom o artigo! parabens!
Só um problema:
pra conseguir instalar o pacote lazarus, eu tive que, alem de instalar o fpc, instalei tbm o fpcsrc. Aí deu certo.
Uma duvida: Fiz um programinha simples, e o executavel deu cerca de 5 mb! É normal isto, ou tem como baixar o tamanho?
[16] Comentário enviado por arcanjoebc em 15/01/2005 - 17:10h
Meu amigo, baixei os pacotes para Linux e Windows e irei testá-los, só que o endereço http://www.ort.org.br/lozano/fpc.htm não está funcionando e eu preciso de exemplo para usar Firebird com o Lazarus. Achei o máximo ter essa versão free, pois os produtos da Borland são muito caros. Valeu pelo artigo!!!
[18] Comentário enviado por arcanjoebc em 16/01/2005 - 14:03h
Não consegui instalar o Lazarus para Linux no meu Conectiva Linux 10, acho que peguei os pacotes errados após horas baixando o bendito... mas consegui baixar a versão Windows e o instalei. Se a versão Linux for igual a do Windows, tá danado, pois eu tentei instalar um simples paconte, seguindo as instruções da página de onde eu baixei o pacote UIB1.2.0, que serve para ter acesso a banco de dados Firebird, o mesmo dá uma série de erros dizendo que não acha as Units declaradas no Formulário principal do pacote. Tentei enaganar o computador, pegando as Units de outros diretórios (pois quando descompactei o UIB, o mesmo coloca em subdiretórios) e o Lazarus não os acha.
Após feito isso tudo estava correndo bem, o Lazarus estava compilando mas... C:\lazarus\pp\bin\i386-win32\make.exe: *** No rule to make target `ide'. Stop., foi essa a mensagem que apareceu e não consegui instalar o pacote.
Notei, também, que o Lazarus for Windows é um pouco instável, pois tentei colocar um simples menu em uma Form e o Lazarus não conseguia colocar mais de um sub-menu. Se tiverem uma dica de onde encontrar um Fórum para sanar as dúvidas (de preferência em português) fico muito grato ... e viva o software Livre ...
[19] Comentário enviado por arcanjoebc em 08/02/2005 - 16:56h
Consegui instalar o Lazarus no meu Conectiva Linux 10. Já instalei, também, os pacotes extras FIREBIRD e TDBF, que se encontram na pasta /usr/share/lazarus/components. Ainda não consegui fazer a conexão com o banco de dados. Criei o aplicativo todo, coloquei os componentes para FIREBIRD mas, quando executa o binário, dá um erro "...start.transaction". Gostaria de saber se existe algum fórum em português para que eu pudesse dirimir as dúvidas. Alguém sabe se existe um fórum em português????
[22] Comentário enviado por marcosmodolo em 12/05/2005 - 20:43h
Estou tentando instalar o Lazarus no Conectiva 10 mas não estou conseguindo, quando eu ento instalar o pacote RPM do lazarus retorna a seguinte mensagem:
erro: failed dependencies:
gdk-pixbuf-devel >= 0.18.0 is needed by lazarus-0.9.6-fpc_1.9.8_0
Os pacotes FPC e FPCSRC eu já instalei. Os pacotes que estou tentando instalar são esses:
[25] Comentário enviado por ailtoncpj em 02/06/2005 - 09:14h
Fiquei mal acostumado com o Delphi, por isso quero saber se o Lazarus tem aqule recurso de completar código ao digitar o ponto '.'. Se existe alguém poderia me dizer como o faço? Muito Obrigado!
[26] Comentário enviado por Serafim em 28/10/2005 - 08:47h
Prezado Aristoteles, seu artigo é muito bom, mas como os outros usuários que enviaram comentários, tive problemas com o Lazarus para utilizar banco de dados. Tentei a instalação do MySQL, mas ele diz que falta uma biblioteca e não reinicia mais; consegui apenas instalar o componente do Interbase, mas preciso de um exemplo qualquer de conexão com o interbase/firebird. Por acaso vc tem como me ajudar ?
Desde já agradeço e aguardo o seu breve contato.
Alessandro Vivone.
[27] Comentário enviado por ulbj05 em 10/01/2006 - 12:36h
Muito bom o seu artigo.
Já programo em Delphi há muito tempo e achei o seu artigo simples mas que aborda com segurança todas as caracteristicas deste tipo de aplicação, utilizando uma linguagem simples, bem apropriada a quem não tem muita intimidade com o Object Pascal. Também gostei do nível dos comentários. Gostaria de saber sobre o tamanho dos arquivos gerados pelo Lazarus. Teve um colega que fez uma aplicação simples e obteve um exe de uns 5 MB. Gostaria de saber, se isto é normal no Lazarus ou se existe alguma configuração que deva ser alterada para que o tamanho dos aplicativos fique mais ou menos compatível com o tamanho do exe que o Delphi gera!!!
Desde já agradeço a atenção.
Muito bom o seu artigo...parabéns!!!
[28] Comentário enviado por thothy em 23/01/2006 - 12:03h
Olá,
Ulbj05, valeu pelo comentário!
Fiz uns testes este final de semana com o Larazus e realmente ele cria arquivos grandes, ainda não consegui descobrir o motivo, talvéz ele carregue todas as bibliotecas necessárias no próprio arquivo .exe e não usa libs dinâmicas..., se o tamanho não for um problema isso tem seu lado positivo, pois vc não precisará de libs adicionais para roda o seu programa.
No Lazaruz para Windows, com uma aplicação feita inicialmente no Delphi, o resultado é um arquivo .exe com cerca 4 vezes o tamanho do arquivo gerado em Delphi, isto é: 1,8MB contra 7,9 Mb.
Tô criando um ábaco (abacolivre.codigolivre.org.br), que foi escrito em Delphi, mas tô colocando em Lazarus para, desta forma, ter versões para Linux e Windows.
[31] Comentário enviado por baroni em 01/11/2006 - 15:48h
Eu fiz um sistema simples em Lazarus. Ele não usa nenhum tipo de banco de dados nem nenhuma coisa em especial, mas quando eu coloco ele em uma outra maquina não consigo fazer com que ele rode.
Cliquei em cima dele, tenti pelo terminal mas nada funciona...
[32] Comentário enviado por fchevitarese em 18/04/2007 - 16:06h
kra ... tudo bom? aqui.. achei ótimo seu tuto mais não estou conseguindo fazer a parte dos códigos ...
Quando a gente tem de colocar os códigos no Type ...
[33] Comentário enviado por djoni em 09/08/2007 - 07:54h
amigos!
problema é o seguinte:
criei uma aplicaçãozinha com um dbgrid para ver se conseguia conectar o postgres.
no ambiente de desenvolvimento com o lazarus aberto, consegui conecatar, e os dados da
tabela apreceram no dbgrid.
porem depois de compilado, quando rodo a aplicação, o programinha simplismente fecha sem
menssagem alguma quando mudo para true a propriedade connect do PQconnection.
[34] Comentário enviado por removido em 18/08/2007 - 12:55h
?comentario=DUVIDA CRUEL
Galera, na empresa onde trabalho o SO eh windows(infelizmente), instalei o Lazarus .... Alguem ja consegui fazer conexão com Mysql .... pode me passar algum exemplo... vlw....
[35] Comentário enviado por removido em 27/10/2007 - 11:48h
Tenho uma duvida e preciso da opnião dos demais.
- Tenho dbedit ligado uma table no banco de dados , esse dbedit campo CpfCnpj, informando o dado passa por uma verificação feito a validação procura o dado informado no BD.
- Duvida:???
Se encontrado o dado no caso (cpfcnpj) Como faço para um Form2 trazer o campo CpfCnpj preenchido e os demais Campos tbm como nome, endereço , razão social ..etc...?
-Não encontrado o cpfcnpj abre o mesmo form2 no caso com apenas o cpfcnpj preenchido e os demais campos pronto pra inclusão dos dados.???
[36] Comentário enviado por art-2000 em 15/10/2008 - 11:08h
A Seicon está mantendo um fórum sobre Lazarus/FreePascal em http://www.freepascal.com.br . O fórum está começando agora, mas acredito que é uma ótima iniciativa, principalmente partindo de uma empresa. Me parece que a empresa se propõe a utilizar Lazarus/FPC como ferramenta de desenvolvimento e manter seus softwares sob GPL.