Desabilitar actions de um actionlist que tenham a mesma tag
Olá pessoal.
Preciso de ajuda. Alguem sabe como faço pra desabilitar as actions de um actionlist que tenham a mesma tag, ou da mesma categoria, em tempo de execução?
Ex.: No meu actionlist tenho muitas actions que eu gostaria que fossem desabilitadas quando um evento ocorresse. essas actions estao na mesma categoria e possuem a mesma tag.
Agradeço antecipadamente.
Preciso de ajuda. Alguem sabe como faço pra desabilitar as actions de um actionlist que tenham a mesma tag, ou da mesma categoria, em tempo de execução?
Ex.: No meu actionlist tenho muitas actions que eu gostaria que fossem desabilitadas quando um evento ocorresse. essas actions estao na mesma categoria e possuem a mesma tag.
Agradeço antecipadamente.
Flaviosan
Curtidas 0
Respostas
Massuda
04/04/2005
Isso deve resolver (não testei)...
uses SysUtils, ... procedure DesabilitaAction(ActionList: TActionList; ACategoria: string; ATag: Integer); var Action: TAction; I: Integer; begin for I := 0 to ActionList.ActionCount - 1 do begin Action := ActionList.Actions[I] as TAction; // mude de AND para OR se for "mesma tag OU mesma categoria" Action.Enabled := AnsiSameText(Action.Category, ACategoria) and (Action.Tag = ATag); end; end;
GOSTEI 0
Flaviosan
04/04/2005
Obrigado Massuda.
Essa funçao funcionou quase perfeito. Para os tipos comuns de actions ela funciona mas para os tipos TDatasetAction elas nao funcionam.
Tenho um formulario mestre-detalhe que quando eu marco um checkbox ele trava as operaçoes com o dataset mestre e habilita o uso do dataset detalhe.
As operaçoes com o mestre estao implementadas nas datasetactions, que sao actions predefinidas do actionlist.
Tem alguma ideia de como faço isso?
Essa funçao funcionou quase perfeito. Para os tipos comuns de actions ela funciona mas para os tipos TDatasetAction elas nao funcionam.
Tenho um formulario mestre-detalhe que quando eu marco um checkbox ele trava as operaçoes com o dataset mestre e habilita o uso do dataset detalhe.
As operaçoes com o mestre estao implementadas nas datasetactions, que sao actions predefinidas do actionlist.
Tem alguma ideia de como faço isso?
GOSTEI 0
Massuda
04/04/2005
A princípio, como TDataSetAction é derivado de TAction, deveria funcionar.
Mas... cada ação derivada de TDataSetAction também controla o Enabled da ação, acho que isso acaba dando um conflito (você desabilita mas o código interno habilita) e a procedure que postei acaba não funcionando.
Pelo código na unit DBActns, não dá para ver um jeito fácil de contornar esse problema.
Mas... cada ação derivada de TDataSetAction também controla o Enabled da ação, acho que isso acaba dando um conflito (você desabilita mas o código interno habilita) e a procedure que postei acaba não funcionando.
Pelo código na unit DBActns, não dá para ver um jeito fácil de contornar esse problema.
GOSTEI 0
Flaviosan
04/04/2005
Um jeito facil seria desabilitar a toolbar onde estao os botoes, mas nao acho que seja o mais certo.
Valeu pela ajuda.
Valeu pela ajuda.
GOSTEI 0
Flaviosan
04/04/2005
Aí pessoal, alguem pode me ajudar a desabilitar as benditas DatasetActions?
Achei que dava pra continuar sem precisar disso, mas...
Aguardo uma resposta.
Agradeço antecipadamente
Achei que dava pra continuar sem precisar disso, mas...
Aguardo uma resposta.
Agradeço antecipadamente
GOSTEI 0
Flaviosan
04/04/2005
Heeeeeelp!
Eu tô precisando muito disso pessoal.
Agradeço antecipadamente.
Eu tô precisando muito disso pessoal.
Agradeço antecipadamente.
GOSTEI 0
Flaviosan
04/04/2005
Após quebrar muito a cabeça(aiii), consegui resolver meu problema. Não era bem o que eu queria mas funciona. Eu precisava desabilitar os datasetactions que estavam ligados na minha tabela, mas só os de manipulação, não os de navegação, mais eu não conseguia desliga-los setando a propriedade enable como false. Só depois de ralar muito, me toquei que era só colocar a tabela como readonly = true e tudo ficou do jeito que eu queria. Os datasetactions refletem o estados da tabela, ex.: quando esta em modo de inserção ele desabilita as ações Insert, Edit e Delete e habilita as ações Post e Cancel.
Só estou colocando essa solução que encontrei, prevendo que alguem tambem passe por esses problemas.
Obrigado pela ajuda pessoal.
T+
Só estou colocando essa solução que encontrei, prevendo que alguem tambem passe por esses problemas.
Obrigado pela ajuda pessoal.
T+
GOSTEI 0