Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trabajar con MessageBox de 3 btn (sí,no,cancelar) (https://www.clubdelphi.com/foros/showthread.php?t=2839)

Ane 08-08-2003 19:19:45

Trabajar con MessageBox de 3 btn (sí,no,cancelar)
 
Hola ,
Mi problema se basa en intentar crear el MessageBox típico que aparece al finalizar una aplicación. En ellos aparecen 3 opciones: sí,no,cancelar.
Ya sé crear el MessageBox (he leído otros hilos anteriores), pero no sé cómo asignar código distinto a cada opción. Es decir, si se selecciona sí, se guarda la información , si se selecciona no, sólo se cierra la aplicación y si se selecciona cancelar, no se hace nada.
He escrito lo siguiente:

if Application.MessageBox('¿Desea guardar los cambios?',
'Confirmación',(MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1))= ID_YES then
begin
actGuardarExecute(Sender);
Application.Terminate;
end
else Application.Terminate;

El problema aquí es que le da igual si se selecciona no o cancelar, pero es que no se me ocurre cómo seleccionar cada opción por separado.
Si alguien pudiera darme alguna pista, lo agradecería mucho.
Gracias de antemano,
- Ane -

delphi.com.ar 08-08-2003 19:31:58

Código:

  case Application.MessageBox('¿Desea guardar los cambios?',
                              'Confirmación',(MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1)) of
    ID_YES:
      actGuardarExecute(Sender);
      Application.Terminate;
    ID_NO:
      Application.Terminate;
    ID_CANCEL: {Puedes suprimir el Cancel si no quieres mostrar el mensaje}
      ShowMessage('Operación Cancelada!');
  end;


delphi.com.ar 08-08-2003 19:34:23

Código:

var
  iResult: Integer;
begin
  iResult := Application.MessageBox('¿Desea guardar los cambios?',
                                    'Confirmación',(MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1));

  if iResult = ID_YES then
  begin
    actGuardarExecute(Sender);
    Application.Terminate;
  end
  else if iResult = ID_NO then
    Application.Terminate

  {Puedes suprimir el Cancel si no quieres mostrar el mensaje}
  else if iResult = ID_CANCEL then
      ShowMessage('Operación Cancelada!');
end;


Beckham 08-08-2003 19:38:29

hola iré algo rápido porque tengo un poco de prisa, lo siento. Prueba esto.

var resultado:integer;

.....

resultado:=Application.MessageBox('¿Desea guardar los cambios?',
'Confirmación',(MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1));
case resultado of
IDYES:begin //Código del sí
actGuardarExecute(Sender);
Application.Terminate;
end;
IDNO:begin
Application.Terminate; //Código del NO
end;
else
// Código del IDCANCEL
end;


...........

Espero que te funcione

Ane 08-08-2003 20:16:41

Muchas gracias a los dos. Funciona todo lo que me habéis dicho perfectamente. :D
Hasta pronto,
- Ane -


La franja horaria es GMT +2. Ahora son las 13:22:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi