Para hacer que la combinación sea SI,NO,CANCELAR existe la constante MB_YESNOCANCEL.
Fijate en el ejemplo que te expongo:
Código Delphi
[-]procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var Res: integer;
begin
Res := MessageBox(0, '¿Desea guardar los cambios antes de salir?', 'Advertencia', MB_ICONINFORMATION or MB_YESNOCANCEL);
case Res of
IDYES: begin
CanClose := True;
ShowMessage('Se ha presionado SI');
end;
IDNO: begin
CanClose := False;
ShowMessage('Se ha presionado NO');
end;
IDCANCEL: begin
CanClose := False;
ShowMessage('Se ha presionado CANCEL');
end;
end;
end;
Como notarás, no sólo establezco que dicha constante sino que además, le indico que en la apariencia de cuadro de díalogo aparezca un globo de información.
Te sugiero que veas ayuda sobre el MessageBox() para que conozcas cada constante de parámetro y de salida. Como asi para entender mejor el funcionamiento de MessageBox().
Saludos,