Como controlar os botões de navegação?
Eu pesquisei no Google e encontrei isso:
No evento DataChange do DataSource:
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled;
Mas não funciona!
Quando clico em btProximo (a tabela tendo 1 registro), ele fica habilitado, só desabilita quando clico pela segunda vez. Se tiver mais de um registro, quando chego no último só desabilita depois de clicar novamente.
Já fiz de tudo, já busquei outras alternativas no Google mas não achei nada.
Alguém poderia me ajudar? Só falta isso para concluir o aplicativo.
Agradeço a ajuda.
No evento DataChange do DataSource:
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled;
Mas não funciona!
Quando clico em btProximo (a tabela tendo 1 registro), ele fica habilitado, só desabilita quando clico pela segunda vez. Se tiver mais de um registro, quando chego no último só desabilita depois de clicar novamente.
Já fiz de tudo, já busquei outras alternativas no Google mas não achei nada.
Alguém poderia me ajudar? Só falta isso para concluir o aplicativo.
Agradeço a ajuda.
Robson Dantas
Curtidas 0
Respostas
Ricardo Araujo
30/12/2010
amigo criei uma rotina acho que vai ajudar.
vou colocar o código inteiro.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btnAdicionar: TButton;
btnAlterar: TButton;
btnExcluir: TButton;
btnCancelar: TButton;
btnSalvar: TButton;
procedure FormCreate(Sender: TObject);
procedure btnAdicionarClick(Sender: TObject);
procedure btnAlterarClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
private
{ Private declarations }
public
procedure inicializa(btAdicionar, btAlterar, btExcluir, btCancelar, btSalvar: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
{ TForm1 }
procedure TForm1.inicializa(btAdicionar, btAlterar, btExcluir,
btCancelar, btSalvar: Boolean);
begin
btnAdicionar.Enabled := btAdicionar;
btnAlterar.Enabled := btAlterar;
btnExcluir.Enabled := btExcluir;
btnCancelar.Enabled := btCancelar;
btnSalvar.Enabled := btSalvar;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
procedure TForm1.btnAdicionarClick(Sender: TObject);
begin
inicializa(false, false, false, true, true);
end;
procedure TForm1.btnAlterarClick(Sender: TObject);
begin
inicializa(false, false, false, true, true);
end;
procedure TForm1.btnCancelarClick(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
procedure TForm1.btnSalvarClick(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
end.
att.
rbbarreto
rbbarreto@hotmail.com
vou colocar o código inteiro.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btnAdicionar: TButton;
btnAlterar: TButton;
btnExcluir: TButton;
btnCancelar: TButton;
btnSalvar: TButton;
procedure FormCreate(Sender: TObject);
procedure btnAdicionarClick(Sender: TObject);
procedure btnAlterarClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
private
{ Private declarations }
public
procedure inicializa(btAdicionar, btAlterar, btExcluir, btCancelar, btSalvar: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
{ TForm1 }
procedure TForm1.inicializa(btAdicionar, btAlterar, btExcluir,
btCancelar, btSalvar: Boolean);
begin
btnAdicionar.Enabled := btAdicionar;
btnAlterar.Enabled := btAlterar;
btnExcluir.Enabled := btExcluir;
btnCancelar.Enabled := btCancelar;
btnSalvar.Enabled := btSalvar;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
procedure TForm1.btnAdicionarClick(Sender: TObject);
begin
inicializa(false, false, false, true, true);
end;
procedure TForm1.btnAlterarClick(Sender: TObject);
begin
inicializa(false, false, false, true, true);
end;
procedure TForm1.btnCancelarClick(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
procedure TForm1.btnSalvarClick(Sender: TObject);
begin
inicializa(true, true, true, false, false);
end;
end.
att.
rbbarreto
rbbarreto@hotmail.com
GOSTEI 0
Marcos Iwazaki
30/12/2010
Amigo isso é do proprio delphiEle so considera que chegou no fim do arquivo (eof) depois q vc da um next no ultimo arquivo. Isso quer dizer o fim do arquivo so vem depois do ultimo registro.
Bom se isso realmente é um problema p vc, pode-se tentar usar o ClientdataSet.recordcount - p saber qtos registros vc tem e o clientdataset.recno para saber qual o index do registro atual q vc esta. Dae é so comparar os dois (se não me engano o RECNO começa no 0 e o recordcount no 1) então é so fazer a lógica.
T+
Bom se isso realmente é um problema p vc, pode-se tentar usar o ClientdataSet.recordcount - p saber qtos registros vc tem e o clientdataset.recno para saber qual o index do registro atual q vc esta. Dae é so comparar os dois (se não me engano o RECNO começa no 0 e o recordcount no 1) então é so fazer a lógica.
T+
GOSTEI 0
Alan Souza
30/12/2010
tenta usar o mesmo código que vc fez no evento AfterScroll do seu DataSet:
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled;
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled;
GOSTEI 0
Leandro
30/12/2010
coloque o codigo uma unica vez no OnDataChange do data source
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled
testa para ver....
btPrimeiro.Enabled := not (dsEnsino.DataSet.BOF);
btAnterior.Enabled := btPrimeiro.Enabled;
btProximo.Enabled := not (dsEnsino.DataSet.EOF);
btUltimo.Enabled := btProximo.Enabled
testa para ver....
GOSTEI 0