Fórum Como controlar os botões de navegação? #393186

30/12/2010

0

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.
Robson Dantas

Robson Dantas

Responder

Posts

30/12/2010

Ricardo Araujo

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

Responder

Gostei + 0

31/12/2010

Marcos Iwazaki

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+
Responder

Gostei + 0

31/12/2010

Alan Souza

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

Gostei + 0

31/12/2010

Leandro

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar