Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con este código que me dejaron (https://www.clubdelphi.com/foros/showthread.php?t=35362)

LAFALOFO 08-09-2006 00:46:22

Ayuda con este código que me dejaron
 
Hola qui de nuevo, pues resulta que sigo sin avanzar mucho con esto del Delphi :(

Bueno, resulta que me han dejado la aplicacion de un compañero que ya no trabaja aqui y me han pedido que haga alguna smodificaciones pero la neta es que no me encuentro en estas ondas... tratare de explicar lo que pasa:

El sistema es para capturar las ordenes que llegan para reparacion de computadoras y demas, se llena la forma (el usuario lo hace) y se guarda en una base de datos al presionar el boton aceptar (BotonAceptarClick) y ahora lo que quieres que haga, es que cuando le dan aceptar, lps datos se guarden pero ademas salga un MessageDlg donde le den la opcion de capturar otra orden (otra pantalla de captura) y no que simplemente se cierre la ventana de captura, ojala me haya explicado... el codigo de el evento onclick para el boton aceptar es este:


procedure TFormaOrdenesServicio.BotonAceptarClick(Sender: TObject);
begin
PanelDatos.SetFocus;
if ValidarDatos then begin
try
//
FuenteDatos.DataSet.UpdateRecord;
xValorId := FuenteDatos.DataSet.FieldByName(cCamposId).Value;
//
dbConsulta.Requery;

//
if FuenteDatos.DataSet.RecordCount > 1 then begin
FuenteDatos.DataSet.Locate(cCamposId, xValorId, [loCaseInsensitive] );
end;
//
HabilitarDatos(false);
HabilitarBotonAceptar(false);
HabilitarBotonProceso(true);
except on E:Exception do
MessageDlg('Verifique su Información, ' +
'ya que esta Provocando el Siguiente Error: ' + #13 + #13 +
E.Message, mtError, [mbOk], 0);
end;
end;
end;



-Panel Datos es el panel donde estan todos los TDBEdit donde se capturan los datos.
-ValidarDatos es un procedimeinto donde valida los campos capturados.


Aqui la onda es que ese MessageDlg debe salir despues de la validacion de datos (ValidarDatos) y despues se `pregunta si se desea capturar otra orden o no, en caso que digan No, se hace UpdateRecord en la base de datos y en caso que se diga Si, se hace el Update record y se manda a llamar de nuevo la orden de captura que en este caso se llama FormaOrdenesServicio...

Asi que... ayudenme por favor, no se en que parte del codigo ponerle ese MessageDlg y tampoco se como escribir el codigo en base a este codigo que me han dejado.






Caral 08-09-2006 00:50:43

Hola en el principio de este codigo po

if MessageBox(Handle,
PChar('Realmente Desea guardar la orden' + #13#10 +
'O seguir con el proceso'),
PChar('Guardar Orden'),
MB_OKCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL) = IDOK then
begin
end;

Con esto le envia un mensaje si acepta, la guarda, si cancela no pasa nada.:D

Saludos

LAFALOFO 08-09-2006 01:33:06

Gracias pero aun no hace loq ue busco!
 
Muchas gracias coleguita, no tenia ni idea...

Agregue ese fragmento de codigo al mio y resulta muy bien, nada mas que lo puse abajito de la validacion de datos sino, de nada servia esa validacion, ahora, despues de la calidacion, al momento en que se da Aceptar, aparece el mensaje; si le das Aceptar, termina el proceso, y si se da cancelar (el otro boton pues) no hace nada de nada :p jeje...

Ahora, lo que quisiera hacer es preguntar si se desea guardar la orden o capturar otra, en caso que digan GUARDAR, se compelta el prceso tal y como lo tengo ahora, pero si se da CAPTURAR OTRO que se mande llamar de nuevo la forma de captura...

Como le hago?


Otra cosa, como puedo modificar las leyendas de los botones para que en vez que em salga si/no o Aceptar/Cancelar, pueda ponerle: Guardar/Capturar Otra dentro de este mismo mensaje?


Bueno ya con eso resolveria mi mistico problema, gracias por la ayuda al coleguita Caral y ojala tambien puedan ayudarme en esto... le spongo el codigo tal y como lo modifique:


procedure TFormaOrdenesServicio.BotonAceptarClick(Sender: TObject);
begin
PanelDatos.SetFocus;
if ValidarDatos then begin
if MessageBox(Handle,
PChar('Desea Guardar la Orden y Cerrar la Ventana' + #13#10 +
' o Desea Capturar Otra Orden de Servicio'),
PChar('Confirmacion de Captura'),
MB_OKCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL) = IDOK then
try
//
FuenteDatos.DataSet.UpdateRecord;
xValorId := FuenteDatos.DataSet.FieldByName(cCamposId).Value;
//
//GrabarBitacora;
dbConsulta.Requery;
//
if FuenteDatos.DataSet.RecordCount > 1 then begin
FuenteDatos.DataSet.Locate(cCamposId, xValorId, CaseInsensitive] );
end;
//
HabilitarDatos(false);
HabilitarBotonAceptar(false);
HabilitarBotonProceso(true);
ESH.Hide;
Etiqueta13.Hide;
Campo13.Hide;
Etiqueta14.Hide;
Campo14.Hide;
ESS.Hide;
Etiqueta15.Hide;
Campo15.Hide;
Etiqueta16.Hide;
Campo16.Hide;
EOS.Hide;
Etiqueta17.Hide;
Campo17.Hide;
Etiqueta18.Hide;
Campo18.Hide;
except on E:Exception do
MessageDlg('Verifique su Información, ' +
'ya que esta Provocando el Siguiente Error: ' + #13 + #13 +
E.Message, mtError, [mbOk], 0);
end;
end;
end;




Gracias de antemano a todos los foreros.

Neftali [Germán.Estévez] 08-09-2006 10:22:20

Por favor, esto es un "comentario" para ambos (sobre todo para Caral que lleva 73 mensajes en estos foros!!).

Utilizad TAG's cuando pongáis código Delphi en los mensajes.

==> ¿Cómo se ponen los TAG's? Pincha aquí, es sencillo.
.
.
.
.
.
Gracias.

LAFALOFO 12-09-2006 19:01:57

Aqui estoy de neuvo con este codigo que me dejaron para corregir, me ha costado un poco de trabajo pues soy nuevo en Delphi y ademas este tio hace todo por codigoy eso me lo complica mas... en fin, pude meterle este MessageDlg al inicio del procedimeinto BotonAceptarClick, de tal forma que si le dan No, se guardan los datos capturados en la base de datos... peeero, no se donde ni como ponerle para que cuando den Si, me dibuje otra orden de captura, que en este caso se llama TFormaOrdenesServicio.
Podrian ayudarme por favor?
No se en que parte del codigo ponerlo y no se la sintaxis que debo poner, supongo sera algo como mrYes then algo asi peron no se donde :confused:


Código Delphi [-]
procedure TFormaOrdenesServicio.BotonAceptarClick(Sender: TObject);
begin
  PanelDatos.SetFocus;
  if ValidarDatos then begin
  if MessageDlg('Desea Capturar Otra Orden de Servicio ?', mtConfirmation,
                   [mbYes, mbNo], 0) = mrNo then
      try
      FuenteDatos.DataSet.UpdateRecord;
      xValorId  := FuenteDatos.DataSet.FieldByName(cCamposId).Value;
      //
      //GrabarBitacora;
      dbConsulta.Requery;
      //
      if FuenteDatos.DataSet.RecordCount > 1 then begin
         FuenteDatos.DataSet.Locate(cCamposId, xValorId, [loCaseInsensitive] );
      end;
      //
      HabilitarDatos(false);
      HabilitarBotonAceptar(false);
      HabilitarBotonProceso(true);
      ESH.Hide;
      Etiqueta13.Hide;
      Campo13.Hide;
      Etiqueta14.Hide;
      Campo14.Hide;
      ESS.Hide;
      Etiqueta15.Hide;
      Campo15.Hide;
      Etiqueta16.Hide;
      Campo16.Hide;
      EOS.Hide;
      Etiqueta17.Hide;
      Campo17.Hide;
      Etiqueta18.Hide;
      Campo18.Hide;
    except on E:Exception do
      MessageDlg('Verifique su Información, ' +
                 'ya que esta Provocando el Siguiente Error: ' + #13 +  #13 +
                 E.Message, mtError, [mbOk], 0);
    end;
  end;
end;



Gracias de antemano.

dec 12-09-2006 19:34:44

Hola,

Bueno. Algo así podría valer:

Código Delphi [-]
  case MessageDlg('Desea Capturar Otra Orden de Servicio ?', mtConfirmation, [mbYes, mbNo], 0) of
    mrYes:
    begin
      ShowMessage('Pulsaste el botón mbYes');
    end;
    mrNo:
    begin
      ShowMessage('Pulsaste el botón mbNo');
    end;
  else
    ShowMessage('Cerraste el diálogo sin pulsar ningún botón');
  end;

O algo así también:

Código Delphi [-]
  if (MessageDlg('Desea Capturar Otra Orden de Servicio ?',
   mtConfirmation, [mbYes, mbNo], 0) = mrNo) then
  begin
    ShowMessage('Pulsaste el botón mbNo');
  end
  else
  begin
    ShowMessage('No pulsaste el botón mbNo');
  end;

LAFALOFO 14-09-2006 20:14:46

Tadaaaan!
 
Soloq ueria agradecer a los foreros ya que sus consejos e ideas me han ayudado mucho y por fin he resuelto este problemilla, que viendolo bien no era nada complicado. :rolleyes:


GRAX

Caral 14-09-2006 20:50:26

Hola LAFALOFO
Para terminar y erriquecer un poco la explicacion de mi maestro Dec. con su permiso y sabiendo que se te presento esta duda antes solo queria darte estos codigos de mensajes que se, te cuestan un poco, para que los puedas usar en otra ocasion.

Si, No Cancela
Código Delphi [-]
 if MessageBox(Handle, 
                PChar('Mensaje'), 
                PChar('Título'),
                MB_YESNOCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL) = IDYES then
  begin
  end;

reintentar, cancelar
Código Delphi [-]
if MessageBox(Handle, 
                PChar('Mensaje'), 
                PChar('Título'),
                MB_RETRYCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL) = IDRETRY then
  begin
  end;

Anular, reintentar, omitir
Código Delphi [-]
  if MessageBox(Handle, 
                PChar('Mensaje'), 
                PChar('Título'),
                MB_ABORTRETRYIGNORE + MB_DEFBUTTON1 + MB_APPLMODAL) = IDRETRY then
  begin
  end;
Se que esto es sencillo pero lo pongo puesto que tanto tu como a otro le podria servir en algun momento.
Saludos y suerte


La franja horaria es GMT +2. Ahora son las 16:14:45.

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