
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.
- Pascal: Linguagem de programação base com sintaxe concisa, dividida em Pascal padrão e Object Pascal (orientado a objetos).
- Delphi: IDE e compilador comercial fechado, utiliza Object Pascal, suporte nativo apenas para Windows e acompanhado da biblioteca de interface VCL.
- 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 projetoTitle=project1: Nome do projetoScaled=True: A janela se redimensiona automaticamente para telas de alta DPIResourceType=res: Usa arquivos res para armazenar íconesUseXPManifest=True: Habilita os estilos visuais modernos do WindowsDpiAware=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
project1.lpr: Ponto de entrada principal do programaunit1.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…