Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con MessageDLG o Application.MessageBox (https://www.clubdelphi.com/foros/showthread.php?t=38696)

federico1 23-12-2006 23:08:42

Problema con MessageDLG o Application.MessageBox
 
tengo el siguiente codigo:

Código Delphi [-]
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:
Código Delphi [-]
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:

Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 19:07:08.

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