Hola.
Cita:
Empezado por ginobili20
Tengo un problema parecido... lo pudiste solucionar??
|
La última vez que
fcobanda pasó por aquí fue por marzo del 2012, así que te propongo una posible solución capturando el evento
OnClick de los botones del
TDBNavigator.
Ejemplo:
Código Delphi
[-]
...
type
TDBNavigator = class( DBCtrls.TDBNavigator );
TForm1 = class( TForm )
tuDataSet: TIBDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
...
procedure FormCreate(Sender: TObject);
procedure tuDataSetNewRecord(DataSet: TDataSet);
private
FBookmark: TBookmark;
procedure DBNavigatornbInsertClick( Sender: TObject );
procedure DBNavigatornbCancelClick( Sender: TObject );
public
end;
...
implementation
procedure TForm1.FormCreate( Sender: TObject );
begin
DBNavigator1.Buttons[nbInsert].OnClick := DBNavigatornbInsertClick;
DBNavigator1.Buttons[nbCancel].OnClick := DBNavigatornbCancelClick;
FBookmark := nil;
end;
procedure TForm1.DBNavigatornbInsertClick( Sender: TObject );
var
nv: TDBNavigator;
begin
nv := TDBNavigator(TControl(Sender).Parent);
if Assigned( FBookmark ) then
begin
nv.DataSource.DataSet.FreeBookmark( FBookmark );
FBookmark := nil;
end;
FBookmark := nv.DataSource.DataSet.GetBookmark;
if Assigned( nv.DataSource ) and ( nv.DataSource.State <> dsInactive ) then
begin
if Assigned( nv.BeforeAction ) then nv.BeforeAction(nv, nbInsert);
nv.DataSource.DataSet.Insert;
if Assigned( nv.OnClick ) then nv.OnClick( nv, nbInsert);
end;
end;
procedure TForm1.DBNavigatornbCancelClick( Sender: TObject );
var
nv: TDBNavigator;
begin
nv := TDBNavigator( TControl( Sender ).Parent );
if Assigned( FBookmark ) then
nv.DataSource.DataSet.GotoBookmark( FBookmark );
end;
procedure TForm1.tuDataSetNewRecord( DataSet: TDataSet );
begin
end;
Es importante decirte que esta opción funcionará en el caso de un
TIBDataSet, que es el caso que inicia este hilo, pero no lo hará con DataSets unidireccionales ( v.gr.:
TSQLDataSet ) ya que estos últimos no soportan el uso de Bookmarks.
Saludos