Criando uma agenda com o Lazarus

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.

[ Hits: 190.130 ]

Por: Aristoteles Rego de Araujo em 19/02/2004


Movimentando-se dentro do array



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;
Página anterior     Próxima página

Páginas do artigo
   1. Baixando e instalando
   2. Criando o formulário da agenda
   3. Colocando botões de controle
   4. Colocando dica do campos
   5. Criando estrutura de registros para a agenda
   6. Colocando a mão na massa. Iniciando a procedure ACTIVATE
   7. Criando evento para confirmar inclusão do registro no array vAgenda
   8. Criando um novo registro
   9. Movimentando-se dentro do array
   10. Download
Outros artigos deste autor

Como criar apresentações Flash usando o vnc2swf

Leitura recomendada

Instalar OBS Studio e VLC no Slackware 15

Usando Linux para operar plataformas de análise gráfica na Bovespa (B3)

Venha pro lado de cá!

Aprendendo a linguagem Python - parte II

TensorFlow no Kali Linux (Rolling Base) CPU Mode

  
Comentários
[1] Comentário enviado por fabio em 20/02/2004 - 00:25h

Excelente artigo, estou baixando o Lazarus pra testar :)

[2] Comentário enviado por hugh em 20/02/2004 - 17:09h

Muito legal, to reinstalando o lazarus no slack! :D

[3] Comentário enviado por coronel em 26/02/2004 - 13:49h

Muito bom mesmo, estou baixando aqui agora!

:)

[4] Comentário enviado por rootuser em 20/04/2004 - 12:29h

Kra excelente esse artigo muito bom!!!

[5] Comentário enviado por _simmons_ em 10/05/2004 - 15:32h

Cara, tem algum lugar com material falando sobre como utilizar lazarus + mysql ou postgre ??? Valeu !

André Michi

[6] Comentário enviado por thothy em 10/05/2004 - 17:22h

Não fiz acesso a base de dados, mas acho que estes link podem ajudar:

Lista de Componentes para FreePascal (PostgreSQL, Dbase, MySQL etc)
http://www.freepascal.org/contrib/db.php3?category=Database

UIB is a set of components to use Interbase, FireBird and YAFFIL
http://www.progdigy.com/UIB/

Componente para Delphi/Kylix
http://www.scibit.com/products/mysqlcomponents/

Exemplo de acesso do FreePascal ai Interbase
http://www.ort.org.br/lozano/fpc.htm

[7] Comentário enviado por caito em 14/05/2004 - 13:40h

Muito bom

[8] Comentário enviado por h4ck3rj em 19/06/2004 - 20:22h

O lazarus aceita conexão com o mysql ? Se sim gostaria de saber como pq pelo que vi parece que não !!!!

[9] Comentário enviado por thothy em 21/06/2004 - 10:59h

Dê uma olhada nos links abaixo:

:: FCL - Free Component Library - mysqldb - Contains a TDataset descendent that can be used to access a MySQL database.

http://www.freepascal.eti.br/fcl/fcl.html

:: Free Pascal interface to MySQL
http://www.freepascal.eti.br/packages/mysql.html

Download da unit: ftp://ftp.freepascal.org/pub/fpc/source/packages.zip

|8^)

[10] Comentário enviado por BDooley em 12/07/2004 - 18:08h

Muito Bom, Parabens !!!!

[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.

[12] Comentário enviado por thothy em 30/07/2004 - 10:21h

Instale "gdk-pixbuf library for gtk1.x" ou desabilite esta opção do Lazarus em Tools->Configure "Build Lazarus" e adicione em option:

'-dNoGdkPixBufLib'

Dá uma olhada neste link:

http://www.lazarus.freepascal.org/modules.php?op=modload&name=FAQ&file=index&myfaq=yes&id_cat=2#25

[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?

Fabio

[14] Comentário enviado por smeagoll em 15/09/2004 - 07:23h

muito bom

[15] Comentário enviado por carlosnatal em 16/11/2004 - 09:33h

Duvido que se faça algo realmente prático com a IDE do Lazarus...

[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!!!


[17] Comentário enviado por helsen em 15/01/2005 - 17:32h

Existe alguma diferença entre Object Pascal e o FreePascal?

[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????

[20] Comentário enviado por orion666 em 15/04/2005 - 19:04h

Que arquivos devo baixar fora os binários para utilizar o lazarus no Windows?

[21] Comentário enviado por thothy em 19/04/2005 - 11:29h

Vc baixou todos os pacote?

Inclusive o gtk2forpascal

http://freshmeat.net/redir/gtk2forpascal/31564/url_homepage/gtk2forpascal.sourceforge.net

[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:

fpc-1.9.8-0.i586.rpm
fpcsrc-1.9.8-050225.i386.rpm
lazarus-0.9.6-fpc_1.9.8_0.i386.rpm

Alguém poderia me ajudar???
Vi que o ARCANJOEBC conseguiu instalar, poderia me ajudar?

[23] Comentário enviado por thothy em 13/05/2005 - 09:42h

Instala o pacote gdk-pixbuf-devel- <versao >= 0.18.0> .rpm que deve estar nos cds da conectiva.

[24] Comentário enviado por marcosmodolo em 13/05/2005 - 22:14h

Ok, era isso mesmo. Deu certo.

Mas agora, baixei o UIB2, mas como faço pra instalar no Lazarus?? Lembrando que estou no conectiva.

[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.

|8^)

[29] Comentário enviado por xALEXANDRE em 16/08/2006 - 23:07h

Muito bem elaborado, parabéns.


[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...

Alguém tem alguma idéia???

[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 ...

Vlws

[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.

se puder me ajudar fico agradecido.

[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.???



Espero que todos possam me ajudar...

--
Marcelo

[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.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts