Fórum Desabilitar actions de um actionlist que tenham a mesma tag #275343
04/04/2005
0
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
Curtir tópico
+ 0Posts
04/04/2005
Massuda
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
04/04/2005
Flaviosan
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
04/04/2005
Massuda
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
04/04/2005
Flaviosan
Valeu pela ajuda.
Gostei + 0
04/04/2005
Flaviosan
Achei que dava pra continuar sem precisar disso, mas...
Aguardo uma resposta.
Agradeço antecipadamente
Gostei + 0
07/04/2005
Flaviosan
Eu tô precisando muito disso pessoal.
Agradeço antecipadamente.
Gostei + 0
07/04/2005
Flaviosan
Só estou colocando essa solução que encontrei, prevendo que alguem tambem passe por esses problemas.
Obrigado pela ajuda pessoal.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)