Como cancelar uma Action simples?
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:
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:
Já tentei um monte de coisa:
Mesmo com o DataSource em estado de inserção ou edição a desgraçada da ação troca de aba.
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
Curtidas 0
Respostas
Rafael Cunha
24/05/2013
Ac_Visualizar.Enable := False.
GOSTEI 0
Joel Rodrigues
24/05/2013
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];
GOSTEI 0
Celso Souza
24/05/2013
Amigos, obrigado pela atenção de todos e mais uma vez conseguimos resolver o embrolho, ficando o código assim:
Está funcionando igual a carro zero!
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!
GOSTEI 0
Joel Rodrigues
24/05/2013
Obrigado pelo retorno.
Estou então marcando este tópico como Concluído.
Estou então marcando este tópico como Concluído.
GOSTEI 0