Fórum Como cancelar uma Action simples? #443864

24/05/2013

0

Boa noite amigos!

Eu tenho uma ação criada no ActionList para navegar pelas abas do PageControl, no evento OnExecute da ação o código ficou assim:

procedure Tfrm_Protocolo.Ac_VisualizarExecute(Sender: TObject);
begin
      begin
          if PageControl1.ActivePage = tbConsulta then
          Leitura('L');
          end;
              if PageControl1.ActivePage = tbConsulta then
                 PageControl1.ActivePage := tbCadastro
              else
                 PageControl1.ActivePage := tbConsulta;
              if PageControl1.ActivePage = tbConsulta then
                 DS_PROTOCOLADAS.DataSet.Open
              else
                 DS_PROTOCOLADAS.DataSet.Close;
end;


A navegação funciona perfeitamente, o que eu estou querendo fazer é não permitir essa navegação, se eu estiver na aba de cadastro e com o DataSource em estado de inserção ou edição, como o código abaixo:

if DS_CADASTRO.State in [dsInsert, dsEdit] then
   begin
      Coloco o quê aqui?????????????????????;
      showmessage('Você deve salvar ou cancelar a operação antes de sair da tela de cadastro');
   end;


Já tentei um monte de coisa:

Ac_Visualizar.Execute:= False;
Ac_Visualizar.Free;
Ac_Visualizar.ExecuteAction(False);
Ac_Visualizar.FreeInstance;


Mesmo com o DataSource em estado de inserção ou edição a desgraçada da ação troca de aba.
Celso Souza

Celso Souza

Responder

Posts

24/05/2013

Rafael Cunha

Ac_Visualizar.Enable := False.
Responder

Gostei + 0

24/05/2013

Joel Rodrigues

Aproveitando a resposta do amigo acima e juntando com o que você já tem, experimente utilizar o seguinte código no evento OnStateChange do DataSource:
Ac_Visualizar.Enabled := not DS_CADASTRO.State in [dsInsert, dsEdit];
Responder

Gostei + 0

24/05/2013

Celso Souza

Amigos, obrigado pela atenção de todos e mais uma vez conseguimos resolver o embrolho, ficando o código assim:

procedure Tfrm_Protocolo.Ac_VisualizarExecute(Sender: TObject);
begin
    if PageControl1.ActivePage = tbConsulta then
         begin
            if PageControl1.ActivePage = tbConsulta then
            Leitura('L');
         end;
            if PageControl1.ActivePage = tbConsulta then
            PageControl1.ActivePage := tbCadastro
            else
            PageControl1.ActivePage := tbConsulta;
            if PageControl1.ActivePage = tbConsulta then
            DS_PROTOCOLADAS.DataSet.Open
            else
            DS_PROTOCOLADAS.DataSet.Close;
    if DS_CADASTRO.State in [dsInsert, dsEdit] then
         begin
            showmessage('Você deve salvar ou cancelar a operação antes de mudar a aba');
            Ac_Visualizar.Enabled := False;
            PageControl1.ActivePage := tbCadastro
         end;
end;


Está funcionando igual a carro zero!
Responder

Gostei + 0

24/05/2013

Joel Rodrigues

Obrigado pelo retorno.
Estou então marcando este tópico como Concluído.
Responder

Gostei + 0

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

Aceitar