Análise completa do primeiro projeto

Na aula anterior, ao abrir a IDE, um projeto com janela vazia é carregado por padrão, mas o projeto ainda não foi salvo. Pressione Ctrl + S para salvar o projeto em uma pasta.

Os arquivos do projeto após o salvamento são mostrados acima.

Pasta backup

Diretório de backup automático que armazena cópias históricas dos arquivos para recuperação em caso de exclusão acidental ou alterações incorretas no código.

project1.ico

Ícone do aplicativo, exibido na janela do software e no atalho da área de trabalho após a compilação.

project1.lpi

Arquivo de configuração do projeto: armazena parâmetros de compilação, unidades referenciadas, configurações de plataforma, pacotes de dependência e outras configurações globais do projeto.

project1.lpr

Arquivo fonte principal do projeto, ponto de entrada do programa que gerencia todas as unidades de formulário.

project1.lps

Registro de sessão da IDE: guarda os arquivos abertos na última vez, layout das janelas e posições do cursor; restaura automaticamente o ambiente de edição ao abrir o projeto novamente.

project1.res

Arquivo de recurso compilado que empacota recursos embutidos como ícones e informações de versão.

unit1.lfm

Arquivo de layout do formulário, armazena tamanho da janela, coordenadas, controles, títulos e outras configurações da interface visual.

unit1.pas

Arquivo de lógica do formulário, onde são escritos cliques de botão, variáveis, funções e toda lógica de negócio, usado em par com o arquivo lfm correspondente.

unit1.pas

Este é nosso arquivo fonte Pascal. Assim como o Delphi, o Lazarus é construído sobre a linguagem Pascal.

  1. Pascal: Linguagem de programação base com sintaxe concisa, dividida em Pascal padrão e Object Pascal (orientado a objetos).
  2. Delphi: IDE e compilador comercial fechado, utiliza Object Pascal, suporte nativo apenas para Windows e acompanhado da biblioteca de interface VCL.
  3. Lazarus: IDE multiplataforma gratuito e open-source baseado no compilador Free Pascal com a biblioteca LCL, compatível com a sintaxe do Delphi e capaz de compilar programas nativos para Windows, macOS, Linux e outros sistemas.

Resumo em uma frase: Pascal é a linguagem, Lazarus e Delphi são duas ferramentas de desenvolvimento IDE diferentes.

Abaixo segue o código fonte dentro do arquivo pas:

unit Unit1;                // Nome da unidade Unit1

{$mode objfpc}{$H+}        // Diretiva de compilação: modo ObjFPC + suporte a strings longas

interface                  // Seção de interface: expõe classes e variáveis externamente
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs; // Importa bibliotecas base

type
  TForm1 = class(TForm)    // Classe da janela principal, herda do formulário base
  private                  // Membros privados
  public                   // Membros públicos
  end;

var
  Form1: TForm1;           // Instância global da janela

implementation            // Seção de implementação: local onde fica toda a lógica
{$R *.lfm}                 // Vincula o arquivo de layout visual Unit1.lfm

end.Code language: JavaScript (javascript)

*.lfm: Arquivo de layout de formulário do Lazarus, armazena controles arrastados, tamanho da janela e configurações de propriedades;

interface declara elementos visíveis externamente, implementation contém a lógica de negócio;

A diretiva embutida {$mode objfpc} habilita o modo de compilação orientado a objetos padrão do Free Pascal;

Um projeto vazio não contém botões nem eventos, apenas uma estrutura básica de janela; basta arrastar controles para adicionar funcionalidades.

unit1.lfm

unit1.lfm é nosso arquivo de layout do formulário

object Form1: TForm1
  Left = 915
  Height = 240
  Top = 237
  Width = 320
  Caption = 'Form1'
  LCLVersion = '4.8.0.0'
end
Code language: JavaScript (javascript)

Explicação de cada parâmetro abaixo:

object Form1: TForm1 // Define o objeto: instância de janela do tipo TForm1
Left = 915 // Distância da borda esquerda da tela: 915 pixels
Height = 240 // Altura da janela: 240 pixels
Top = 237 // Distância da borda superior da tela: 237 pixels
Width = 320 // Largura da janela: 320 pixels
Caption = ‘Form1’ // Texto da barra de título da janela
LCLVersion = ‘4.8.0.0’ // Versão da biblioteca LCL que gerou esse layout
end // Fim da definição do objeto janela

project1.ico

Este é um arquivo ico usado como ícone do aplicativo

Pode ser aberto por qualquer navegador.

project1.lpi

Trata-se de um documento XML

O arquivo project1.lpi é o arquivo de configuração central do projeto, dividido em três blocos principais:

1. ProjectOptions Configurações básicas do projeto

  • <Version Value="12"/>: Versão 12 do formato do arquivo de configuração
  • <PathDelim Value="\\"/>: Barra invertida separadora de caminhos no Windows

General Configurações gerais do projeto

  • SessionStorage=InProjectDir: Registros de edição da IDE salvos dentro da pasta do projeto
  • Title=project1: Nome do projeto
  • Scaled=True: A janela se redimensiona automaticamente para telas de alta DPI
  • ResourceType=res: Usa arquivos res para armazenar ícones
  • UseXPManifest=True: Habilita os estilos visuais modernos do Windows
    • DpiAware=True: O software suporta telas de alta resolução para evitar interface borrada
  • Icon=0: Usa o ícone ico padrão do projeto

BuildModes

Apenas o perfil de compilação padrão Default (local onde se diferenciam os modos Debug e Release)

RequiredPackages

Dependência da biblioteca de componentes gráficos LCL (obrigatória para programas GUI)

Units Lista de arquivos inclusos no projeto

  1. project1.lpr: Ponto de entrada principal do programa
  2. unit1.pas: Unidade de formulário vinculada à classe Form1 correspondente à janela visual

2. CompilerOptions Parâmetros do compilador

  • Nome do executável de saída: project1
  • Pasta de arquivos intermediários da compilação: lib\CPU-sistema (ex: lib\x86_64-win64)
  • <GraphicApplication=True>: Marca o programa como aplicativo gráfico Windows, não console

3. Debugging Configurações de depuração

Ignora exceções específicas sem interromper a depuração: EAbort, erros de abertura de arquivo, erros de código de ferramentas e outros.

project1.lpr

Também utiliza a sintaxe Free Pascal (Object Pascal)

// Define este arquivo como ponto de entrada principal do projeto
program project1;

// Diretivas de compilação: habilita sintaxe orientada a objetos e suporte a strings longas
{$mode objfpc}{$H+}

uses
  // Importa biblioteca de threads para sistemas Unix (Linux/macOS)
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  // Importa biblioteca de threads para sistemas Amiga
  {$IFDEF HASAMIGA}
  athreads,
  {$ENDIF}
  Interfaces, // Camada gráfica multiplataforma base do LCL
  Forms,     // Framework base de formulários
  Unit1      // Unidade personalizada da janela principal
  { you can add units after this }; // Adicione novas unidades aqui

{$R *.res} // Carrega o arquivo de recursos do projeto (ícones, informações de versão)

begin
  RequireDerivedFormResource:=True; // Habilita leitura dos arquivos de layout lfm
  Application.Scaled:=True;        // Redimensionamento automático da interface para telas de alta DPI
  {$PUSH}{$WARN 5044 OFF}          // Desativa temporariamente o aviso de compilação 5044
  Application.MainFormOnTaskbar:=True; // Exibe ícone independente da janela principal na barra de tarefas
  {$POP}                           // Restaura as configurações originais de avisos

  Application.Initialize;           // Inicializa o ambiente de execução da aplicação GUI
  Application.CreateForm(TForm1, Form1); // Cria a instância da janela principal Form1
  Application.Run;                 // Inicia o loop de mensagens da janela aguardando interações do usuário
end.Code language: PHP (php)

Diferença:

  • Arquivos comuns .pas: unidades (formulários ou módulos funcionais)
  • .lpr: Arquivo Pascal principal do projeto, ponto de partida do programa

project1.lps

Lazarus Project Session (arquivo de sessão do projeto), não é código Pascal

É um registro de configuração exclusivo da IDE que guarda o estado de edição da última vez que o projeto foi aberto

Exemplos: quais arquivos de código/formulário estavam abertos, posição e tamanho de cada janela, layouts divididos, posição do cursor, pontos de interrupção, histórico de buscas e muito mais

.lpr/.pas: Código fonte, obrigatórios para compilação;

.lps: Arquivo temporário apenas para uso da IDE, não interfere na compilação.

project1.res

Arquivo binário de recursos compilados

Gerado automaticamente a partir do project1.ico, informações de versão do programa e manifesto de interface do Windows durante a compilação

  • Armazena o ícone do software exibido ao clicar com o botão direito no executável, na barra de tarefas e nos atalhos da área de trabalho após compilar
  • Armazena configurações de recursos do sistema como suporte a alto DPI e estilos visuais XP do Windows

Ligação na compilação A diretiva de código {$R *.res} incorpora esse arquivo de recursos dentro do exe final Características

  • Pode ser excluído sem riscos; será recriado automaticamente na próxima compilação do projeto;
  • Apenas necessário para programas GUI no Windows; aplicativos de console não geram esse arquivo.

Ao abrir a IDE, você verá essa área

Este é nosso designer visual de formulários, você pode arrastar diversos controles para ele. O funcionamento é praticamente igual ao VB, WinForm, WPF, Delphi, Qt e outras ferramentas de desenvolvimento baseadas em formulários.

Por exemplo, arraste um botão para o formulário

Execute o projeto novamente.

Um botão aparecerá na janela.

Na janela Messages na parte inferior, você vê a pasta onde o exe é gerado

Dentro da pasta do projeto um novo arquivo exe será criado

Este exe é o nosso software compilado final, você pode enviá-lo diretamente para outros computadores rodar, é um executável independente sem dependências externas.

Executa de forma extremamente rápida…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *