Ver Mensaje Individual
  #6  
Antiguo 11-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Perdón por tardar en contestar, al parecer se me ha perdido este hilo.

¿Acaso no hace eso ya los controles?

Si estoy editando un registro y quiero volver al valor anterior, uso Dataset.Cancel y esto volverá el registro al último valor estable.

Si doy a guardar (Dataset.Post), el nuevo valor pasa al valor del campo y el viejo se pierde.

El botón Limpiar, correspondería a la acción Dataset.Insert que traerá los valores por defecto de cada campo (establecidos en la base de datos como valores por defecto) y asignará sus valores a los DBEdits.

Para saber si un campo ha sido modificado en el DBEdit, tienes la propiedad Modified del TField.

Creo que verías más claro el asunto usando un TDBNavigator, porque te deja cancelar los cambios y volver a lo que tu llamas "valores estables".

Edito: El botón consultar tendría este código:
Código Delphi [-]
Msg := EmptyStr;

if Dataset in EditModes then // posiblemente ha sido modificado la edición
 for i:= 0 to dataset.Fields.Count -1 do
   if dataset.Fields[i].Modified then
     Msg:= msg + '- '+ dataset.fields[i].FieldName + #10#13;

  if Msg <> EmptyStr then 
  begin 
    Msg := 'Los siguientes campos han sido modificados:'+ #10#13 + Msg + ' ¿desea descartar los cambios realizados?';
    if Application.Messagebox(msg, 'Advertencia', mbyesno) = idyes then
    begin
      Dataset.Cancel;
      // consultar
    end
    else  // no hacer nada, el registro quedará en edición con los cambios realizados, dando
         // la posibilidad de guardar o cancelar.
end;

Si expongo todo esto, es porque dices que eres "nuevo en delphi" y puedes estar reinventando la rueda.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 11-12-2007 a las 14:50:16.
Responder Con Cita