PDA

Ver la Versión Completa : Trabajar con MessageBox de 3 btn (sí,no,cancelar)


Ane
08-08-2003, 19:19:45
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
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
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 -