Fórum Como mudar o modo de Ediçao do Dataset ? #333697

25/11/2006

0

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

Responder

Posts

25/11/2006

Marco Salles

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



Responder

Gostei + 0

25/11/2006

Laelsonc

A Terceira caiu matando.

Obrigadão !!


Responder

Gostei + 0

25/11/2006

Martins

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!!!!


Responder

Gostei + 0

25/11/2006

Paullsoftware

[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:


Responder

Gostei + 0

25/11/2006

Marco Salles

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


Responder

Gostei + 0

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

Aceitar