** RESOLVIDO ** Desabilitar Botao.

Ola Pessoal,
Preciso DESABILITAR BOTÃO APLICACAO FORMULARIO GRID EDITAVEL:

if (condicao == “L”){
sc_btn_display (‘new’, ‘off’);
}
Alguem conseguiu fazer ?

Paulo.

Olá Paulo,

Dei uma olhada no código fonte gerado na aplicação, mas não consegui identificar o nome do botão.
Porém, de qualquer forma, existe um detalhe… Se a aplicação for do tipo Grid Editável, ele só existe um botão “new” que fica na parte inferior da aplicação, então, não será possível estar escondendo ou mostrando o botão de novo de acordo com o resultado do registro… Testei com o botão de “update” ele escondeu normalmente.

Resumindo, você poderá até, esconder o botão de novo, porém, ou será mostrado para todos ou não será mostrado, não vai ser possível utilizar a condição…

Espero ter ajudado ou esclarecido algo.

Rodrigo Lins.

Olá Rodrigo,

Tenho Pedido Mestre-Detalhe e no formulario Pai tenho um flag de pedido fechado. Quando pedido esta como fechado, usuario tera acesso ao mesmo apenas para consultas, porem com os botoes Incluir,Alterar,Excluir desabilitados. Isso ja faço hoje.

Ocorre que nao consegui desabilitar o botao de Incluir(new) no formulario Filho(ITENS),
Isto esta gerando uma falha no sistema, porque usuario entra no pedido para consulta, mas pode incluir itens se desejar, Alterando o total do pedido e gerando um problema no financeiro.

EXISTE UM FORMA DE DESABILITAR AQUELE BOTAO ???

Paulo.

O controle está sendo todo feito no formulário pai, correto?

Tente utilizar uma outra macro, a sc_apl_conf e utilize as opções para desabilitar o recurso desejado.

Não fiz o teste no formulário “Mestre/Detalhe”, mas para funcionar esta macro ela tem que ser chamado em uma aplicação anterior à a aplicaçãop que vai ser alterada.
Exemplo da macro:

sc_apl_conf(“frm_itens_pedido.php”, “insert”, “off”);
sc_apl_conf(“frm_itens_pedido.php”, “update”, “off”);
sc_apl_conf(“frm_itens_pedido.php”, “delete”, “off”);

Espero ter ajudado.

Se funcionar dá um “ok”, só para todos saberem se funcionou ou não, quando precisarem.

Rodrigo Lins.

1 Curtida

Grande Rodrigo, na mosca.

Funcionou exatamente como eu precisava.
Obrigado pela dica.

Para quem precisar, o codigo ficou assim:

-USAR NO EVENTO OnLoad da Aplicação PAI.
if ({pedsituacao} == “F”){
sc_btn_display (‘insert’, ‘off’);
sc_btn_display (‘update’, ‘off’);
sc_btn_display (‘delete’, ‘off’);
sc_apl_conf(“frm_liberapedido_itens.php”, “insert”, “off”);
sc_apl_conf(“frm_liberapedido_itens.php”, “update”, “off”);
sc_apl_conf(“frm_liberapedido_itens.php”, “delete”, “off”);
}

2 Curtidas

Obrigado, Resolveu o meu problema também!!

Olá e bom dia a todos!

Funciona mesmo.

Após quebrar um pouco a cabeça e, pela lógica, o que deveria funcionar não funcionou. Essa postagem foi o que resolveu.

Crédito para: Rodrigo Lins

-x-

Segue meu caso (que não funcionou):

[i]//*** Testa Aprovação da Diretoria para Permitir interação
$SQL = “SELECT sp_StatusDiretoria FROM Compras_SP_MCC WHERE sp_Id = '”.[sp_Id]."’";
sc_lookup(rs, $SQL);
$StatusDiretoria = {rs[0][0]};

if ( $StatusDiretoria ) {
sc_btn_display(“new”, “off”);
}
//*** (Fim do Caso que não funcionou) ******************************
[/i]

-x-

Segue meu caso (solucionado!):

[i]//*** Testa Aprovação da Diretoria para Permitir interação
$SQL = “SELECT sp_StatusDiretoria FROM Compras_SP_MCC WHERE sp_Id = '”.[sp_Id]."’";
sc_lookup(rs, $SQL);
$StatusDiretoria = {rs[0][0]};

if ( $StatusDiretoria ) {
sc_apl_conf(“form_Compras_SP_MCC2.php”, “insert”, “off”);
}
else {
sc_apl_conf(“form_Compras_SP_MCC2.php”, “insert”, “on”);
}
//*** (Fim do Caso) ******************************
[/i]

-x-

Explicando:

FORM -> GRID -> FORM2

Um FORM que chama uma GRID que por sua vez chama outro FORM.

Nesse caso o FORM2form_Compras_SP_MCC2.php” está sendo chamado por uma GRID que foi chamada por outro FORM.

Se for executar uma aplicação GRID, chamando-a direto (GRID.php), a lógica seria utilizar a macro “sc_btn_display(“new”,“off/on”)” que funciona sem problemas. Porém isso não funciona se essa aplicação tiver sido chamada por um FORM através do recurso Mestre/Detalhe.

Nota: Esse código deve ser colocado no evento “OnScriptInit” da aplicação GRID que foi chamada pelo FORM.

Abraço a todos…
JamTC
:slight_smile:

JamTC,

Muito bom. Obrigado por compartilhar!!

resolveu o meu problema show muito obrigado por compartilhar

Obrigada resolveu aqui meu problema também