Sc_btn_display não funciona em formulário de multiplos registros

Prezados,

Estou com uma dúvida.

Possuo um Formulário de Múltiplos Registros no modo Grid Editável (view). E gostaria de esconder os botões de Novo, Atualização e o Delete. Porém, por algum motivo, quando utilizo a opção abaixo, só funciona a opção de insert na qual não esconde o botão grande “Novo”.

sc_btn_display("insert", "off");
sc_btn_display("update", "off");
sc_btn_display("delete", "off");

Além disso, gostaria de fazer outra pergunta. Como escondo um botão personalizado?

Agradeço pelas respostas desde já.

Em qual evento está utilizando?

Estou utilizando no evento onload

e remover na barra de ferramentas?

Não irá funcionar, porque é uma regra de negócio, onde eles são desabilitados por um motivo específico e em outras ocasiões estão aparecendo…

Caro @DevFullTime,

Realizamos alguns testes com a macro sc_btn_display no formulário Grid Editável (View), e ao aplicar o valor “off” no segundo parâmetro da macro, os botões informados no primeiro parâmetro foram desabilitados no formulário. Os testes foram realizados tanto no evento onLoad como também no onLoadRecord para desabilitar botões apenas de registros específicos.

Você mencionou na descrição do tópico inicial que gostaria de esconder os botões Novo, Atualização e Exclusão, mas que somente o Novo não está sendo desabilitado no formulário. Porém, o valor que representa o botão Novo é “new” e não “insert” como foi descrito no bloco de código. Acredito que talvez tenha sido esse o motivo do botão “Novo” não ter sido desabilitado.

Com relação ao botão personalizado, basta informar no primeiro parâmetro o nome do botão personalizado, que foi dado ao mesmo no momento da criação.

Esperamos que as informações acima possam lhe ajudar.

Nossos cumprimentos!

Olá @Danilo_Lima,

Tentarei explicar melhor o problema. Possui o formulário abaixo que o tipo dele é um Grid Editavel (view) (não utilizo o modal) :

Esse é um formulário detalhe, vinculado a uma aplicação de nota fiscal. Quando a nota fiscal ficar como autorizada, eu quero fazer com que esse detalhe fique impossibilitado de adicionar um novo produto e modificação. Para isso, eu teria que bloquear o new, update, delete e os botões complementares em amarelo “Selecionar Itens” e “Cadastrar Lote”.

O código que testei e não funcionou foi:

sc_lookup(ds, "select autorizada from tabela where nf_id = " . {campo_da_tabela});
if({ds} != false || !empty({ds})) {

	if({ds[0][0]} === 'S') {

		sc_btn_display("new", "off");
		sc_btn_display("update", "off");
		sc_btn_display("delete", "off");

	} else {

		sc_btn_display ('new', 'on');
		sc_btn_display ('update', 'on');
		sc_btn_display ('delete', 'on');		

	}

}

Esse é o único tipo de formulário que tenho esse problema, esses formulários do tipo Grid.

O Grid Editável com o modal, funciona normal, porém, não é o que eu preciso. Preciso que ele não abra o modal.

Bom dia,

Estou com o mesmo problema, o meu formulário está definido como um único registro, mas dentro dos campos coloquei que alguns eram de múltiplos registros pois estão recebendo valores de variáveis globais vindas de outra pagina em que utilizei botão run.

A aplicação funciona normalmente, ou seja, exibe os botão e campos com a macro display quando há apenas um elemento no array, mas quando há mais de um a tela fica em branca e não exibe os campos.

O código de exibição dos campos e botões está assim:

{Id_Agenda} = [Id_Agenda];
{Id_PA_Todos} = [Id_PA_Todos];
{Id_PA_Todos_Agenda} = [Id_PA_Todos_Agenda];
{Id_Status_PA_Todos} = [Id_Status_PA_Todos];
{Id_PA} = [Id_PA];
{Nome_Area} = [Nome_Area];

$nomeArea = is_array({Nome_Area}) ? {Nome_Area} : [{Nome_Area}];
$statusPA = is_array({Id_Status_PA_Todos}) ? {Id_Status_PA_Todos} : [{Id_Status_PA_Todos}];

foreach ($nomeArea as $index => $area) {
$areas = explode(’, ‘, $area);
$statusArray = isset($statusPA[$index]) ? explode(’, ', $statusPA[$index]) : [];

foreach ($areas as $key => $singleArea) {
    $currentStatus = isset($statusArray[$key]) ? $statusArray[$key] : 'Status não definido';

    if (($currentStatus == 0 || $currentStatus == 2) && strpos($singleArea, 'Segurança Empresarial') !== false) {
        sc_btn_display("Reabrir", "off");
        sc_btn_display("Baixa", "off");
        sc_btn_display("Resolver", "on");
        sc_field_display("Observacao_Resolvido_new", "off");
        sc_field_display("Observacao_Resolvido", "off");
        sc_field_display("Observacao_Resolvido_Log", "on");
        sc_field_display("Observacao_Resolvido_new_Log", "off");
        sc_field_display("Observacao_Baixa", "off");
    }

    echo "Área: $singleArea, Status: $currentStatus<br>";
}

}

Você conseguiu resolver esse problema? Se sim, dá uma ajuda aí, por favor

eu estava usando anteriormente o evento onScriptInit, e daí aparecia as depurações, porém como indicado por você, coloquei o código dentro do onLoadRecord e agora não aparece mais nada, vc tem ideia do que pode estar aocntecendo?

Evento onload.
Para macros sc_field_display e sc_btn_display, pois atuam em todas as linhas.

Caro @DevFullTime,

Realizamos testes seguindo exatamente o mesmo exemplo que o seu acima, e dependendo do valor do campo “autorizado” no formulário mestre, os botões insert, update e delete, estão sendo desabilitados normalmente no formulário detalhe. Lembrando que o código acima para as validações deve estar no evento onLoadRecord.

Segue a imagem abaixo com os dois cenários para o campo “autorizado”:

Espero que as informações acima possa ajudá-lo.

Nossos cumprimentos!