Ver Mensaje Individual
  #1  
Antiguo 18-03-2014
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Reputación: 21
gorsan Va por buen camino
Un método append que funciona en un Grid y falla en un TForm con controles

Hola de nuevo. Diréis que soy un poco inútil pero me pasa una cosa curiosa que paso a detallaros a continuación:

En un Modulo de datos tengo una IBDataSet y un DataSet apuntando a él.
Sobre un formulario dispongo un Grid enlazado a ese DataSet de modo que el TForm queda encima y el grid debajo y mediante lo siguiente conmuto entre uno y otro:
Código Delphi [-]
procedure TWFicha.TBFichaClick(Sender: TObject);
begin
   PNEdicion.BringToFront;
   GLista.SendToBack;
   if TBTabla.Down = True then TBTabla.Down := False;
   if TBFicha.Down = False then TBFicha.Down := True;
end;

Código Delphi [-]
procedure TWFicha.TBTablaClick(Sender: TObject);
begin
   GLista.BringToFront;
   PNEdicion.SendToBack;
   if TBTabla.Down = False then TBTabla.Down := True;
   if TBFicha.Down = True then TBFicha.Down := False;
   GLista.SetFocus;
end;

En el formulario dispongo tantos controles DBEdit como campos hay en el grid. Bueno pues la cuestión es que desde el grid el método append funciona perfectamente y añade un nuevo registro sin problemas. Pero si desde el Form dispongo de una botonera para ejecutar el método append y luego el post como sigue:

Código Delphi [-]
procedure TWFicha.TBAddClick(Sender: TObject);
begin
   TBAdd.Enabled:=False;
   TBEditar.Enabled:=False;
   TBBorrar.Enabled:=False;
   TBGrabar.Enabled:=True;
   TBCancelar.Enabled:=True;
   TBCargarFoto.Enabled:=False;
   TBEliminarFoto.Enabled:=False;
   TBCalcular.Enabled:=False;
   TBCerrar.Enabled:=False;
   TBImprimir.Enabled:=False;
   TBSalir.Enabled:=False;
   EBuscar.SetFocus;
   with DMFicha.IBStoredProc1 do
    begin
     StoredProcName:='GENERADOR_TRABAJADOR';
     Prepare;
     ExecProc;
   end;
   with DMFicha.IBFicha do
    try
       DisableControls;
       Close;
       Open;
       Append;
    finally
       EnableControls;
    end;

   WFicha.DBCONTADOR.Text:=IntToStr(DMFicha.IBStoredProc1.Params[0].Value);
   WFicha.DBAlta.Text:=DateToStr(Now);
   WFicha.DBBAJA.Text:='';
   DMFicha.IBStoredProc1.Close;
   DMFicha.IBFicha.Post;
   {NuevoRegistro:=True;}
   DBPRIMER_APELLIDO.SetFocus;
end;

Código Delphi [-]
procedure TWFicha.TBGrabarClick(Sender: TObject);
begin
   TBAdd.Enabled:=True;
   TBEditar.Enabled:=True;
   TBBorrar.Enabled:=True;
   TBGrabar.Enabled:=False;
   TBCancelar.Enabled:=False;
   TBCargarFoto.Enabled:=True;
   TBEliminarFoto.Enabled:=True;
   TBCalcular.Enabled:=True;
   TBCerrar.Enabled:=True;
   TBImprimir.Enabled:=True;
   TBSalir.Enabled:=True;
   DMFicha.IBFicha.Edit;
   DMFicha.IBFicha.Post;
end;

Otra cosa curiosa es que sobre los controles del Form puedo editar los datos y guarda los cambios directamente sin el post pero no permite el método append lanzando la siguiente excepción:
"cannot focus a disabled or invisible window"
Alguna idea. Seguro que es la tontería mas grande del mundo pero no lo veo.
Responder Con Cita