domingo, 23 de agosto de 2026

Explicação sobre os "Donos de Objetos" em sua Criação

Tutorial rápido — Create(Owner) em Object Pascal

Em Object Pascal, muitos componentes, incluindo formulários, são criados utilizando o padrão:

```
Objeto := TClasse.Create(Owner);

O parâmetro Owner define o proprietário do componente. Uma das principais responsabilidades do Owner é controlar a destruição automática do objeto.

```

1. Create(Application)

Form2 := TForm2.Create(Application);

Nesse caso:

  • O Owner do formulário é Application.
  • A aplicação será responsável pela sua destruição.
  • O formulário também pode ser destruído antecipadamente usando Free.
Uso comum: formulários que permanecem vinculados ao ciclo de vida da aplicação.

2. Create(Self)

Form2 := TForm2.Create(Self);
Atenção: Self não significa simplesmente "ele mesmo". Em Object Pascal, Self representa a instância atual do objeto.

Por exemplo:

procedure TForm1.Abrir;
begin
  Form2 := TForm2.Create(Self);
end;

Nesse exemplo:

  • Self representa Form1.
  • Portanto, o Owner de Form2 será Form1.
  • Quando Form1 for destruído, Form2 também será destruído automaticamente.

3. Create(nil)

Form2 := TForm2.Create(nil);

Quando o parâmetro é nil, o formulário é criado sem Owner.

  • Nenhum outro objeto será responsável pela sua destruição.
  • O formulário não será destruído automaticamente por um Owner.
  • O código que criou o formulário deve cuidar de sua destruição.

Um padrão comum para um formulário modal é:

Form2 := TForm2.Create(nil);
try
  Form2.ShowModal;
finally
  Form2.Free;
end;
Importante: Create(nil) não significa "na prática, Application". Se o Owner é nil, o objeto realmente não possui proprietário.

4. Application.CreateForm

Application.CreateForm(TForm2, Form2);

CreateForm é um método de TApplication usado para criar formulários.

Conceitualmente, o resultado é semelhante a criar o formulário passando Application como Owner:

Form2 := TForm2.Create(Application);

Portanto, nesse caso, o formulário fica associado ao ciclo de vida da aplicação.

Regra prática

Criação Owner Responsável pela destruição
Create(Application) Application Application
Create(Self) Objeto representado por Self Objeto representado por Self
Create(nil) Nenhum Seu código

Owner não é Parent

Um conceito importante é não confundir Owner com Parent.

Owner

Está relacionado ao gerenciamento do ciclo de vida e destruição dos componentes.

Parent

Está relacionado à hierarquia visual dos controles.

Por exemplo:

Button1.Parent := Panel1;

Nesse caso, Panel1 passa a ser o Parent visual do botão. Isso não significa que Panel1 tenha se tornado automaticamente o Owner do botão.

Resumo

```
  • Owner controla quem será responsável pela destruição automática do componente.
  • Self representa a instância atual do objeto.
  • nil significa que o objeto não possui Owner.
  • Create(nil) não transforma o Owner em Application.
  • Owner e Parent são conceitos diferentes.

A escolha do Owner deve levar em consideração quem deverá controlar o ciclo de vida do objeto criado.

```

Abraços

Terence

sexta-feira, 21 de agosto de 2026

Placa Mãe Gigabyte com Ryzen 5300G, não exibe imagem no boot inicial com cabo HDMI

Recentemente passei por um problema bastante intrigante ao montar e configurar um setup com uma placa-mãe Gigabyte A520M, processador AMD Ryzen 3 5300G (com vídeo integrado Radeon) e um monitor da marca Aitek.

Ao conectar o computador através do cabo HDMI, as imagens iniciais do sistema — como a tela da BIOS/Setup e a logo de carregamento do sistema operacional — simplesmente não apareciam. O monitor ficava sem sinal ou em tela preta e o vídeo só dava ar da sua graça quando o sistema operacional alcançava a tela de Login.

Por outro lado, ao utilizar um cabo VGA analógico antigo, o vídeo funcionava perfeitamente desde o primeiro segundo ao ligar a máquina.

Daria para usar no VGA? Sim, mas...

Seria perfeitamente possível continuar utilizando o cabo VGA. No entanto, o cabo VGA utiliza sinal analógico, o que sujeita a imagem a interferências e limita a fidelidade de cores e nitidez em monitores modernos. Como o objetivo era utilizar a transmissão digital e de melhor qualidade do HDMI, fui atrás da solução.

A Solução: Desabilitar o CSM no BIOS

A raiz do problema estava no modo de legado da placa-mãe. Para resolver o problema definitivamente e ter imagem via HDMI desde o momento em que o botão Power é pressionado, siga o passo a passo:

1. Conecte o cabo VGA temporariamente

Ligue o computador utilizando o cabo VGA para que você consiga visualizar a tela de inicialização e acessar o setup da placa-mãe.

2. Acessar o BIOS do sistema

Ao ligar a máquina, pressione repetidamente a tecla Delete (ou Del) para acessar a BIOS da placa-mãe Gigabyte.

3. Localize a opção de Boot e altere o CSM

Na minha placa, dentro do BIOS, ir até a aba Boot. Procurar pela opção CSM Support (poderia ser Compatibility Support Module) e alterar seu status para Disabled (Desabilitado).

4. Salvar e trocar os cabos

Pressione a tecla F10 para salvar as alterações e sair da BIOS. Desligue o computador, desconecte o cabo VGA, conecte o cabo HDMI e ligue a máquina novamente.

Voilà! A imagem da logo da Gigabyte e da BIOS passou a exibir normalmente via HDMI desde o primeiro segundo.

Por que isso acontece?

💡 Entendendo a parte técnica (UEFI vs CSM - explicação dada pela IA do Google):
O CSM (Compatibility Support Module) é um componente do firmware da placa-mãe que emula o antigo sistema BIOS (Legacy) para manter compatibilidade com sistemas operacionais e placas mais antigas.

Ao desabilitar o CSM, a placa-mãe é forçada a rodar em modo UEFI puro. Nesse modo, a firmware carrega nativamente os drivers gráficos digitais UEFI (GOP - Graphics Output Protocol), inicializando saídas de vídeo digitais de alta resolução (como HDMI e DisplayPort) imediatamente no boot, sem depender das rotinas analógicas legadas (VGA).
⚠️ Atenção antes de desabilitar o CSM:
Para que o sistema operacional inicie corretamente em modo UEFI puro (com CSM desabilitado), o seu disco de boot (SSD/HD) precisa estar formatado no esquema de partição GPT. Se o disco estiver no formato antigo MBR, o sistema não vai encontrar o boot até que a tabela de partição seja convertida.

Conclusão

Se você está enfrentando tela preta na inicialização ao usar saídas digitais em processadores Ryzen com vídeo integrado ou placas de vídeo modernas, verificar o estado do suporte a CSM na BIOS é o primeiro passo. É uma configuração simples que garante o funcionamento correto das conexões digitais modernas.

Espero ter ajudado.

Abraços a todos