sincronizar botoes com clientdataset

29/11/2005

Pessoal como posso sincronizar meu botoes de inclusão e navegação com o clientdataset ou recordsource e como faço isso.

por exemplo o botão de alteração ficar desabilitado se nao ha nem um registro, se houver o de gravar fica desabilitado se voce nao alterou. etc...

valeu


Pereiramarcos

Respostas

29/11/2005

Aprendiz_ce

Pessoal como posso sincronizar meu botoes de inclusão e navegação com o clientdataset ou recordsource e como faço isso. por exemplo o botão de alteração ficar desabilitado se nao ha nem um registro, se houver o de gravar fica desabilitado se voce nao alterou. etc... valeu



Pereira,

Acho que isso ficaria melhor dentro o ONDATACHANGE do DataSource. OK?

Exemplo:

BBtnGravar.Enabled := DataSource.State in [dsInsert, dsEdit];

E assim por diante para os outros botões.

Boa sorte.


Responder Citar

29/11/2005

Emerson

eu sugiro que isso seja feito no OnStateChange do Datasource.


Responder Citar

29/11/2005

Jairroberto

Olá, PereiraMarcos!

Alguma coisa contra o uso de ActionList (DataSetAction)?


Um abraço,
Jair


Responder Citar

29/11/2005

Pereiramarcos

Olá, PereiraMarcos! Alguma coisa contra o uso de ActionList (DataSetAction)? Um abraço, Jair


jair obrigado pela resposta, humildemente por onde comecar pode me dizer onde pego um passo a passo e obrigado mesmo pela dica a todos voces.


Responder Citar

30/11/2005

Raserafim

o ActionLits é um modo rápido de fazer alguma coisa, no entanto eu vejo algumas desvantagens:
o desempenho não é tão bom, e vai ter algum momento que vc vai querer ter um controle maior sobre os eventos e não vai conseguir.

aconselharia a usar no evento OnStateChange do Datasource, como disse o colega emerson.


Responder Citar

30/11/2005

Emerson

você pode seguir a dica do [b:eaa80e2c19]aprendiz_ce[/b:eaa80e2c19], mas coloque o código no evento OnStateChange do Datasource. seria algo assim:

BBtnIncluir.Enabled := DataSource.Dataset.Active and not (DataSource.State in [dsInsert, dsEdit&93;);
BBtnGravar.Enabled := DataSource.State in &91;dsInsert, dsEdit&93;;
BBtnCancelar.Enabled := BBtnGravar.Enabled;
BBtnExcluir.Enabled := BBtnIncluir.Enabled and not DataSource.Dataset.IsEmpty;



Responder Citar

30/11/2005

Macario

você pode seguir a dica do [b:72a59a65aa]aprendiz_ce[/b:72a59a65aa], mas coloque o código no evento OnStateChange do Datasource. seria algo assim:
BBtnIncluir.Enabled := DataSource.Dataset.Active and not (DataSource.State in [dsInsert, dsEdit&93;);
BBtnGravar.Enabled := DataSource.State in &91;dsInsert, dsEdit&93;;
BBtnCancelar.Enabled := BBtnGravar.Enabled;
BBtnExcluir.Enabled := BBtnIncluir.Enabled and not DataSource.Dataset.IsEmpty;


Como fica isso usando DM, se a tabela for comum ao sistema?

Porque pra passar um botao teria que referenciar ao form?

fiquei com essa duvida, pois ai teria que ter um outro tipo de controle; :roll:


Responder Citar

30/11/2005

Pereiramarcos

Macario not found, estou usando o datasource nos forms e nao no DM, existe alguma diferenca alem da poluição visual no form ?

:shock:


Responder Citar

30/11/2005

Emerson

no caso de usar DM, a melhor forma seriam as tabelas ficarem no DM, e os datasources ficarem no form em que forem utilizados.

no modelo de desenvolvimento que eu adotei (n-camadas, com nested tables), colocar o(s) datasources(s) no form é uma ótima maneira de trabalhar e, como todos os meus forms são herdados, o código fica centralizado, pois o ancestral possui todos os controles necessários - inclusive esse dos botões.


Responder Citar

30/11/2005

Ramms

Macario not found, estou usando o datasource nos forms e nao no DM, existe alguma diferenca alem da poluição visual no form ? :shock:


Não


Responder Citar

30/11/2005

Emerson

Macario not found, estou usando o datasource nos forms e nao no DM, existe alguma diferenca alem da poluição visual no form ? :shock:


Não


Responder Citar

30/11/2005

Jairroberto

Olá, pessoal!

Nunca tive problema de performance com a utilização de ActionList. Além disso, uma mesma Action pode ser utilizada para um item de menu, um botão e um item de menu popup, ao mesmo tempo, centralizando as ações de habilitação e visibilidade do botão, além da propriedade Caption e também da Imagem utilizada nos menus e nos botões. Posso garantir que a produtividade aumenta muito ao utilizar ActionList. Mas, como dizia um amigo, opinião é como umbigo, todo mundo tem uma.


Um abraço,
Jair


Responder Citar

30/11/2005

Pereiramarcos

estou usando datasources no form de cadastro e nao no DMs.

no modelo de desenvolvimento que eu adotei (n-camadas, com nested tables), colocar o(s) datasources(s) no form é uma ótima maneira de trabalhar e, como todos os meus forms são herdados, o código fica centralizado, pois o ancestral possui todos os controles necessários - inclusive esse dos botões.

cara eu programo tb em Visual fox e fazia heranca visual e muito importante e poupa trabalho....como ficam os datasources neste caso com relacao aos botoes, pois e isto que busco Poo na concepcao da palavra.

obrigado a voce e a todos que fazem deste forum um sem igual....


Responder Citar