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;
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.