Array
(
)

sincronizar botoes com clientdataset

Pereiramarcos
   - 29 nov 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


Aprendiz_ce
   - 29 nov 2005


Citação:
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.


Emerson
   - 29 nov 2005

eu sugiro que isso seja feito no OnStateChange do Datasource.


Jairroberto
   - 29 nov 2005

Olá, PereiraMarcos!

Alguma coisa contra o uso de ActionList (DataSetAction)?


Um abraço,
Jair


Pereiramarcos
   - 29 nov 2005


Citação:
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.


Raserafim
   - 30 nov 2005

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.


Emerson
   - 30 nov 2005

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

#Código

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



Macario
   - 30 nov 2005


Citação:
você pode seguir a dica do aprendiz_ce, mas coloque o código no evento OnStateChange do Datasource. seria algo assim:

#Código

BBtnIncluir.Enabled := DataSource.Dataset.Active and not (DataSource.State in [dsInsert, dsEdit]);
BBtnGravar.Enabled := DataSource.State in [dsInsert, dsEdit];
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:


Pereiramarcos
   - 30 nov 2005

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

:shock:


Emerson
   - 30 nov 2005

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.


Ramms
   - 30 nov 2005


Citação:
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


Emerson
   - 30 nov 2005


Citação:
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


Jairroberto
   - 30 nov 2005

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


Pereiramarcos
   - 30 nov 2005

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