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 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.
// 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']
);
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.