GARANTIR DESCONTO

Fórum Desabilitar actions de um actionlist que tenham a mesma tag #275343

04/04/2005

0

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.


Flaviosan

Flaviosan

Responder

Posts

04/04/2005

Massuda

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;



Responder

Gostei + 0

04/04/2005

Flaviosan

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?


Responder

Gostei + 0

04/04/2005

Massuda

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.


Responder

Gostei + 0

04/04/2005

Flaviosan

Um jeito facil seria desabilitar a toolbar onde estao os botoes, mas nao acho que seja o mais certo.
Valeu pela ajuda.


Responder

Gostei + 0

04/04/2005

Flaviosan

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


Responder

Gostei + 0

07/04/2005

Flaviosan

Heeeeeelp!
Eu tô precisando muito disso pessoal.
Agradeço antecipadamente.


Responder

Gostei + 0

07/04/2005

Flaviosan

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+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar