Macro: sc_field_display()

Olá pessoal,

Seguinte, utilizei a macro sc_field_display() no evento onScriptInit de um grid
No início estava utilizando para um campo (criado na mão), e funcionou como deveria, porém ao usar uma segunda vez esta macro, não funciona mais, ou seja, a macro não esconde nenhum dos dois campos que foram informados por esta macro para serem escondidas!, é como se a macro não existisse mais.

if (){
sc_field_display({cnpj}, off);
sc_field_display({nome}, off);
}

Versão do SC: 7.00.0018

Isso ocorre comigo também.
No grid a minha única saida é usar o botão que esconde/mostra colunas.
E isso não atende minha necessidade, assim como a sua.

jorge

Obrigado pelo retorno Jorge,

Fiz mais alguns testes e funcionou na grid, como !!
Utilize a macro para deixar em on antes, independente da condição.
Depois, abra o IF() e utilize para off
Desta forma funcionou!

sc_field_display({cnpj}, on);
sc_field_display({nome}, on);
if (){
sc_field_display({cnpj}, off);
sc_field_display({nome}, off);
}

Att,

Jocimar

Como dizia um velho professor meu da escola técnica:

“Para todo IF sempre tem que haver um ELSE!”.

Haroldo!

Acredito que este “velho professor” não conhecia o SC …
Entendo que, se a ferramenta adiciona campos para o grid, então o mesmo é “on”, nunca iniciar em “off” (ou será que existe if’s a mais no SC ?), salvo o contrário. Mas, a ferramenta SC não é tão velha e sábia, e temos que testá-la para descobrir suas falhas, e assim contornar a situação, pois o evento não é onRecord e sim onScriptInit

Att,

Jocimar

Eu usava o comando nos eventos da quebra, funcionava de forma intermitente.

Mudei pra o evento onScriptInit e aparentemente está resolvido o problema.

Te explico porque acho que o ocorre isso. Não vejo como erro.

Primeiro. Se observar o código fonte da macro, variáveis em sessão são criadas para guardar o valor dessa flag. Se fechar a guia e abrir novamente a tela na mesma janela, a sessão se mantém e os campos surgirão como off.

Segundo. Evento onscriptinit é sempre executado quando acionado um evento ajax.

Meu professor não conhecia o SC, realmente, mas ele era muito sábio e tinha razão, Intrínseco ou não um IF sempre precisa ter a condição contrária, ou seja devemos pensar sempre no caso contrário, principalmente se tratando de um FrameWork.

Concordo discordando,

Se estou utilizando uma ferramenta onde adiciono um campo é para este ficar “on”!, então a ferramente têm que ter isto por padrão, salvo o contrário, onde entra a minha instrução, e caso a minha instrução mude este padrão então eu que terei que controlar!, porém a instrução está em onScriptInit. Neste caso o SC têm que estar preparado para resolver!, esquecendo do usuário da mesma, ela têm que resolver isto por padrão!

Att,

Jocimar

também tenho problemas com (mais) essa macro.

ela até esconde o campo, mas não o mostra quando precisa.

o pior é que as vezes vc precisa fazer gatilhos pra tentar resolver um simples problema.