PDA

Ver la Versión Completa : Problema con MessageDLG o Application.MessageBox


federico1
23-12-2006, 23:08:42
tengo el siguiente codigo:

MessageDlg('El Socio se EXCEDE del monto permitido. El monto de compra tiene que ser menor o igual A: '+vMontoActual, MtInformation, [mbOK],0)

y el problema que tengo es que cuando selecciono OK se vuelve al form anterior al que me encontraba antes del mensaje.

Alguien me podría ayudar ya que no encontre ningun hilo que hable de esto

chileno
23-12-2006, 23:43:20
No se si te entienda pero asi es como fuciona un messageDLG, yo creo que debes plantear mejor el como solucionar dicho proceso, "el valor de la compra excede al credito asignado al cliente", ahora si quieres que al presionar el boton OK realice una operación, puedes hacer esto:

procedure TForm1.Button1Click(Sender: TObject);
begin
case MessageDlg('credito insuficiente', MtInformation, [mbOK,mbCancel],0) of
mrOK : begin
showMessage('lo siento para otro dia sera');
end;
mrCancel : begin
showMessage('que tanto, si me hechan...me pagan los años de servicio');
end;
end;

espero que te sirva de ayuda......si no especifica mejor tu problema y te hecho un cable ;)

federico1
24-12-2006, 00:07:27
muchas gracias a lo mejor no me exprese bien, tengo un form con un edit en el cual almaceno un determinado monto para una compra, ahora bien si el socio tiene un monto permitido menor al que se ingresa en el edit largo un mensaje informativo de que se excede de ese monto y la idea es que vuelva al campo del monto ingresado para que corrija este valor.
el problema es que el messageDLG me saca del form y me manda al anterior.
Pero si me dices que messageDLG trabaja asi tendre que hacer un form personalizado.

roman
24-12-2006, 08:07:29
Lo que quieres se puede hacer perfectamente con el MessageDlg, el problema debe estar en otra parte. Sería bueno que explicaras un poco más acerca de cómo muestras el mensaje.

Por ejemplo, si el mensaje lo muestras en el evento OnClick de un botón cuya propiedad ModalResult es mrOk (quizá el botón "Aceptar" del formulario con el Edit), entonces, luego de cerrar el MessageDlg, también se cerrará el formulario con el Edit porque su propiedad ModalResult cambió.

Si la situación es parecida a lo que digo, lo que debes hacer es utlizar el evento OnCloseQuery del formulario para hacer la validación y cancelar el cierre del formulario de ser necesario:


procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// haces validaciones sólo cuando se presione el botón "Aceptar"
if ModalResult = mrOk then
begin
// Si no pasa la validación...
if MontoEsMayorQueElPermitido then
begin
// Lanzas el menaje
MessageDlg('Valor incorrecto', MtInformation, [mbOK],0);

// e impides que se cierre el formulario
CanClose := false;
end;
end;
end;


// Saludos

federico1
26-12-2006, 18:54:41
exactamente era eso roman, muchas gracias, solucionado el problema