Código
Imitando comportamento da propriedade Enable de botões igualmente ao DbNavigator.
Algumas pessoas ñ gostam de misturar comandos que ñ sejam exclusivos do DataModule, portanto, este código funciona muito bem.
Acesse a propriedade OnChange do componente DataSource da sua aplicação onde quer que ele estaja, nas minhas aplicações sempre deixo no DataModule.
Insira o código como mostrado abaixo, respeitando o XXXX que serão os nomes que você deu aos componentes e forms.
procedure TDataModuleXXXX.DataSourceXXXXDataChange(Sender: TObject;
Field: TField);
begin
with DataSourceXXXX.DataSet do
begin
//Primeiro Registro [nbFirst]
FormXXXX.Botao_Primeiro.Enabled:= (not Bof) and (State = dsBrowse);
//Último Registro [nbLast]
FormXXXX.Botao_Ultimo.Enabled:= (not Eof) and (State = dsBrowse);
//Registro Anterior [nbPrior]
FormXXXX.Botao_Anterior.Enabled:= (not Bof) and (State = dsBrowse);
//Próximo Registro [nbNext]
FormXXXX.Botao_Proximo.Enabled:= (not Eof) and (State = dsBrowse);
//Inserir Registro [nbInsert]
FormXXXX.Botao_Novo.Enabled:= (State = dsBrowse);
//Remover Registro [nbDelete]
FormXXXX.Botao_Remover.Enabled:= (State = dsBrowse) and (not IsEmpty);
//Confirmar Alteração no Registro [nbPost]
FormXXXX.Botao_Confirmar.enabled:= (State <> dsBrowse);
//Editar Registro [nbEdit]
FormXXXX.Botao_Editar.Enabled:= (State = dsBrowse) and (not IsEmpty);
//Cancelar Alterações no Registro [nbCancel]
FormXXXX.Botao_Cancelar.Enabled:= (State <> dsBrowse);
end;
end;
Com isso sempre que você solicitar um Novo Registro os botões que ñ participam da ação ficarão desabilitados.
Abraços.
Sem mais,
Eduardo Ludgero
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009