En lugar de programar todo esto en el "OnShow", es más recomendable (en este caso) crear un proceso tuyo, y desde ahí realizar las comprobaciones.
Que ganamos haciendo esto? Pues que si no queremos mostrar el formulario, no llamamos el "show" y ya tenemos el cancelar hecho.
Así pues, la cosa quedaría algo parecida a esto:
Lo llamas:
Código Delphi
[-]Application.CreateForm(TfDomingo_T, fDomingo_T);
fDomingo_T.mostrarFormulario;
y definir el procedure "mostrarFormulario":
Código Delphi
[-]Donde := MessageDlgPosI(' ¿Cena, Mensaje, Presidir u Otro? ',mtInformation,[mbIgnore,
mbRetry, mbAll, mbNoToAll, mbYesToAll],0,360,319,ltSpanish2);
case Donde of
8:
begin EsP := True ;
end;
4:
begin EsC := True;
end;
5:
begin EsM := True;
end;
9:
begin EsO := True;
end;
10:
begin EsCerrar := True;
end;
end;
if not EsCerrar then
begin
show;
end;
Saludos.