Como mudar o modo de Ediçao do Dataset ?

Delphi

25/11/2006

Dataset not in Edit ou Insert Mode.


Como faço pra mudar esse modo de Edição, para assim controlar a Visibilidade de um Botão ´Salvar Alterações´ como a funçao do Dataset Post. Tipo como funciona a Visibilidade do DBNavigator.


Laelsonc

Laelsonc

Curtidas 1

Respostas

Marco Salles

Marco Salles

25/11/2006

Como faço pra mudar esse modo de Edição, para assim controlar a Visibilidade de um Botão ´Salvar Alterações´ como a funçao do Dataset Post. Tipo como funciona a Visibilidade do DBNavigator.


Se netendi... Tres tecnicas entre outras:

1)
Não daria: ???
no AfterPost do dataset voce desabita este botão.. e nos eventos AfterEdit ou No AftterInsert , voce habilita este Botão


2)
[b:be8b643fde]Geralmente eu uso uma procedure Bloqueio No proprio Form[/b:be8b643fde] ...Evita que no datamodulo voce fique fazendo referencias aos componentes de outro formulário..


Ainda tem outra tecnica.. Testar o estado do dataset para assim impedir ou não a exceução do codigo do Botão:

3)
if dataset.state in [dsedit,dsinsert] Then begin execute Salvar end else faça nada



GOSTEI 0
Laelsonc

Laelsonc

25/11/2006

A Terceira caiu matando.

Obrigadão !!


GOSTEI 0
Martins

Martins

25/11/2006

A Terceira caiu matando. Obrigadão !!


Não sei se te serve mas vc poderia procurar implementar algo em: OnDataChange.

procedure TFxxxx.DSCliDataChange(Sender: TObject; Field: TField);
begin
  with ClientDataSet do 
  begin
    Incluir.Enabled := (State = dsBrowse);
    Editar.Enabled := (State = dsBrowse) and (not IsEmpty);
    Excluir.Enabled := (State = dsBrowse) and (not IsEmpty);
    OK.Enabled := (State <> dsBrowse);
    Cancel.Enabled := (State <> dsBrowse);
    First.Enabled := (not Bof) and (State = dsBrowse);
    Prior.Enabled := (not Bof) and (State = dsBrowse);
    Next.Enabled := (not Eof) and (State = dsBrowse);
    Last.Enabled := (not Eof) and (State = dsBrowse);
end;
end; 


Assim vc controla o estado dos seus botões semelhante ao q faz o DBNavigator.

Boa sorte!!!!


GOSTEI 0
Paullsoftware

Paullsoftware

25/11/2006

[quote:96663057ca=´laelsonc´]A Terceira caiu matando. Obrigadão !!


Não sei se te serve mas vc poderia procurar implementar algo em: OnDataChange.

procedure TFxxxx.DSCliDataChange(Sender: TObject; Field: TField);
begin
  with ClientDataSet do 
  begin
    Incluir.Enabled := (State = dsBrowse);
    Editar.Enabled := (State = dsBrowse) and (not IsEmpty);
    Excluir.Enabled := (State = dsBrowse) and (not IsEmpty);
    OK.Enabled := (State <> dsBrowse);
    Cancel.Enabled := (State <> dsBrowse);
    First.Enabled := (not Bof) and (State = dsBrowse);
    Prior.Enabled := (not Bof) and (State = dsBrowse);
    Next.Enabled := (not Eof) and (State = dsBrowse);
    Last.Enabled := (not Eof) and (State = dsBrowse);
end;
end; 


Assim vc controla o estado dos seus botões semelhante ao q faz o DBNavigator.

Boa sorte!!!![/quote:96663057ca]
é exatamente assim de faço, não tem dor de cabeça nenhuma... simples e objetivo! :wink:


GOSTEI 0
Marco Salles

Marco Salles

25/11/2006

eu nao gosto muito de usar de usar o enable no OnDataChange , porque particularmente eu não gosto de misturar o conteudo do DataModulo com os componetes visuais do Form...

No datamodulo eu tento usar somente codigos relativos ao datasets , datasourcs , enfim compontes ligados ao mesmo

Em tremos práticos isto equivale a ter um procedure Bloqeuio , que habilita ou desabilita os botões atraves do enable

Mas pessoalmente também não gosto , pois o visual do form fica meio que feio , com os botoes acizentados , ainda mais quando esses botoes tem Imagems , dando um toque especial no formulário


GOSTEI 0
POSTAR