Como mudar o modo de Ediçao do Dataset ?
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
Curtidas 1
Respostas
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
25/11/2006
A Terceira caiu matando.
Obrigadão !!
Obrigadão !!
GOSTEI 0
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
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
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
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