Logo

Lazarus IDE: Modernizando Diálogos com TaskDialog

Gladiston Santana - Desenvolvimento robusto e de alta performance

Introdução

Por muito tempo, o ShowMessage foi a ferramenta padrão para exibir alertas rápidos em Pascal. No entanto, as interfaces modernas exigem mais flexibilidade, traduções consistentes e uma estética que se integre ao sistema operacional. O TTaskDialog surge como o substituto definitivo para as antigas funções ShowMessage, MessageBox e MessageDlg.

Neste artigo, veremos como implementar essa variação moderna no Lazarus, garantindo um comportamento uniforme em diferentes sistemas operacionais e permitindo uma personalização profunda das interações com o usuário.

Por que migrar para o TaskDialog?

A principal vantagem é a consistência. Ao contrário dos diálogos antigos, onde os botões muitas vezes não seguiam a tradução do sistema (exibindo "Yes/No" em aplicações em português), o TaskDialog permite total controle sobre os textos, ícones e até a inclusão de elementos como RadioGroups e hyperlinks.

Exemplo de TTaskDialog com múltiplos recursos

Exemplo de diálogo configurado como assistente (Wizard).

Refatoração Prática

Muitos desenvolvedores evitam o TaskDialog pelo volume de código necessário. A solução "Web Senior" para isso é a refatoração. Ao criar uma função global, você mantém a simplicidade do ShowMessage com o poder do TaskDialog.

procedure ShowMessage2(ATexto: String; ATitle: String='Informação:'; ACaption: String='');
begin
  if ACaption = '' then ACaption := ExtractFileName(Application.ExeName);
  with TTaskDialog.Create(nil) do
  try
    Caption := ACaption;
    Title := ATitle;
    Text := ATexto;
    CommonButtons := [tcbOk];
    MainIcon := tdiInformation;
    Execute;
  finally
    Free;
  end;
end;

Botões Customizados e RadioButtons

O TaskDialog brilha quando precisamos de respostas específicas. Podemos substituir os botões padrão por textos personalizados (como "Remover" e "Manter") e até incluir listas de opções via RadioButtons para escolhas complexas.

TaskDialog com opções no ambiente Linux
// Exemplo de chamada com múltiplas opções
iResposta := QueroEscolher(
    'Gerar Planilha',
    'Deseja incluir dados sigilosos?',
    'Ao prosseguir você concorda com os termos da LGPD...',
    ['Planilha básica', 'Planilha com CPF oculto*', 'Planilha completa']
);
TaskDialog com RadioButtons no Windows

Conclusão

O TTaskDialog não é apenas uma melhoria estética; é uma ferramenta de produtividade e qualidade de software. Ao fatorar suas janelas de diálogo, você reduz o código repetitivo e oferece uma experiência de usuário superior, seja no Windows ou no Linux.

Embora o Lazarus ofereça constantes adicionais como o tdiQuestion (inexistente nativamente no Delphi), a lógica de implementação permanece a mesma, facilitando a portabilidade dos seus projetos Pascal.

Abandone os diálogos obsoletos e leve suas aplicações para o próximo nível de maturidade visual.