Bug - Macro sc_field_disabled()

ScriptCase: v 7.1.0004
App: Formulário Único Registro
Evento Código: onLoad
Macro: sc_field_disabled();
Problema: Hoje tentei usar a macro sc_field_disabled no evento onload do meu form e a mesma não sutil efeito algum. Tentei executa-la de várias maneiras, sc_field_disabled(“Nome=true”), sc_field_disabled(“nome=true”), sc_field_disabled("{nome}"), sc_field_disabled(“nome”). Com todos esses testes e nada. Então cheguei a conclusão que fosse um bug da versão.

Almeida,

Utilizo assim (evento onLoad), e funciona.

sc_field_disabled(“campo”);

Versão do SC 7.00.0018

Att,

Jocimar

Pois é jocimar, na v 7.0 a mesma funcionava perfeitamente, nunca tive problemas ou dúvida na hora de usa-la, agora na v7.1 a bicha zicou… rsrss

Boa tarde,

Reportei este problema para nossa equipe de bugs.

att,
Bernhard Bernsmann

Almeida,

Qual o tipo de campo no scriptcase que você está tentando desabilitar?
Tentou clicar no campo para verificar se o mesmo está disponivel para a digitação?

Tentei clicar no campo, o mesmo aceitou editar.
Tem esse bug também, os campos desabilitados não estão pegando o css do tema, tenho que editar o arquivo css do SC
mudando as cores do mesmo, para não confundir.

Tentei em campos tipo, CPF, TEXTO, NUMERO.

Esse formulário único registro está usando blocos? Caso sim, por acaso o campo está no 2 bloco?

Tentou criar um formulário único registro e adicionar apenas o campo no evento.

ex: sc_field_disabled(“cpf_cnpj”);

Sim o formulário está usando bloco e campo está no 2o bloco.
Tentei desabilitar todos os campos, apenas 1, tentei 1 por 1 e nem um dos campos foi desabilitado, tenho campo tipo data, cpf, texto, número.
Segue uma imagem abaixo para te mostrar a estrutura do me form, não fiz o teste criando um novoo formulário, com apenas 1 bloco, pois creio
que a macro deveria desabilitar um campo do 1, 2 ,3, 4, 5, 6, 7 bloco, qualquer bloco.

Se quiser que faça um teste poste aqui que farei.

Imagem:

Aproveitando, tive problema para esconder/mostrar bloco quando o campo no BD está com Char de qualquer tamanho utilizando o empty({campo}), considera vazio com campos do tipo varchar.
Como o campo têm 3 de tamanho, a função empty() considera que o campo não está em branco, pois há 3 espaços, aqui não estava funcionando, acabei utilizando strpos() para ver se há alguma espaço em branco, e assim fazer a condição funcionar, o que o esconder/mostrar bloco funciona.
O form é de único registro, com 7 páginas e cada página com alguns blocos!
O objetivo do meu form é mostrar os campos do SQL do form, porém criei campos na mão para preenchê-los no onRecord, e assim comparar conteúdo para mostrar apenas aqueles que foram alterados, mas somente os campos diferente, que não contenham informação (empty()).

A função empty() do PHP funciona assim mesmo, ou seja, se retorna para um {campo do formulário} espaços (neste caso criei o campo na mão), então não está vazio ?

Att,

Jocimar

Campos tipo char, nunca ficam vazios, sempre são preenchidos com espaços em seu tamanho total. Campos tipo varchar ficam vazios.

OK

Isto foi o que verifiquei, …, em linguagens procedurais, caso uma variável ou conteúdo de campo da tabela estejam vazias, independente do seu tamanho, a função empty() retorna .t. para campo sem conteúdo, entende o espaço como falta de informação, assim como campo do tipo numérico que está 0 (zerado).

Venham aprendendo o PHP na medida da necessidade, e estas particularidades vão sendo “aprendidas” na medida dos “problemas” encontrados!
Obrigado pelo retorno!

Att,

Jocimar

Tente usar empty(trim($variavel)).

1 Curtida

Legal Almeida!

Tentei empty(trim( {campo} )), mas o SC se perde e dá a famosa tela branca!

Grato,

Jocimar

Não entendi a parada da tela branca, rsrs…

Tente algo assim

$valor = trim({varivavel}); if(empty($valor)){ ... }

Obrigado Almeida,

Tenho que conferir diversos campos, e cada linha fica assim:

sc_block_display(novo, off);
if ( ({chttpo}==“Exclusao” || {chttpo}==“Inclusao”) || ( {chttpo}==“Alteracao” && strpos({chtnov}," ")===false && {chtnov} != {chenov} )){
sc_block_display(novo, on);
}

Então, não pretendo criar mais variáveis para conferência no IF, têm que ficar em apenas numa linha.

Att,

Jocimar