BUG: Macro sc_field_style não aceita parâmetro como variável

As vezes me pergunto como é o planejamento pelo desenvolver NM antes de criar uma macro (ou funcionalidade).

Para quem tem cores no banco de dados e queira usar a macro dinamicamente, aqui vai a dica:

onAplicationInit:

sc_field_style({um campo da consulta}) ;

onRecord:

$_cor=$ds[o][0];  // <- cor que veio do banco de dados
$this->NM_field_style["campo da consulta"] = "background-color:$_cor;color:white;font-weight:bold;";  

TAGS: Colorir, Celula, Grid, Dinamico, Style, Background, Color, Variavel, sc_field_style

Isso mestre Haroldo.
Diminuindo limitações.

Muitos detalhes devem passar despercebidos ou serem considerados sem importancia durante a concepcao das macros.

probleminha chato esse

Muito legal a dica. Já percebi que no SC o objeto $this contem muitas coisas legais a fazer. Mais uma pro bloco de anotações de dicas. Valeu.

Haroldo,

Legal esse negócio de colocar tags no final.
Vou procurar adotar.

Valeu!!

Jorge, é um hábito antigo meu. Marco tópicos que julgo importantes para pesquisas futuras.

Por isso, Mestre Haroldo, que você é o cara!

hehehe

TFA

Boa tarde,

Tentei fazer conforme dica e não deu certo, estou fazendo algo de errado ?

onApplicationInit:

sc_field_style({COD_MEDICO});
sc_field_style({DATA});
sc_field_style({HORA});
sc_field_style({PACIENTE});

onRecord:

    echo $bloqueadoAux = [VAR_BLOQUEADO]; [i](Deixei o echo para ter certeza que estava passando o valor #ff1919)[/i]

$this->NM_field_style["COD_MEDICO"] = "background-color:$bloqueadoAux;color:white;font-weight:bold;";
$this->NM_field_style["DATA"] 		= "background-color:$bloqueadoAux;color:white;font-weight:bold;";
$this->NM_field_style["HORA"] 		= "background-color:$bloqueadoAux;color:white;font-weight:bold;";
$this->NM_field_style["PACIENTE"] 	= "background-color:$bloqueadoAux;color:white;font-weight:bold;";

Agradeço

Alguém conseguiu setar a cor dinamicamente conforme orientação do Aroldo ?

Pessoal eu consegui resolver dessa forma, passando uma global:

[vcor] = $corstatus;

sc_field_style({status}, '[vcor]', '15px', '#000000', 'Arial, sans-serif', '800');
1 Curtida

como se está usando um atributo interna do SC e como o SC converte o nome dos campos para letras minúsculas sempre, acho que se usar o nome com letra minúscula funciona,mesmo que o campo tenha sido criado com letras maiúsculas.

Sugiro a criação de uma biblioteca interna que faça o processo de atribuir a propriedade que é do tipo array, assim caso a NM troque o nome do atributo ou a forma internamente é só ajustar a biblioteca e regerar as aplicações.

Ideal mesmo seria a NM corrigir isso, as macros não tem um padrão, cada uma é de um jeito.

Show Felipe!!! :clap: :clap: :clap:
Muito obrigado amigo :grinning:

Olá amigos
Infelizmente, comigo nao funcionou.
No application Init eu tenho
sc_field_style({status_rc});

No onRecord eu tenho

sc_lookup(ds,“select cor_status from licit_rc_status where id_status={status_rc}”);
if (!empty({ds})) {
$_cor = {ds[0][0]};
$this->NM_field_style[“status_rc”] = “background-color:$_cor;color:white;font-weight:bold;”;
}

No banco de dados o campo de cor está definido como
cor_status BINARY(90)

image

Porem, no grid, continua sem nenhuma cor
image

Esse é um tópico antigo, vou revisar para ver se ainda funciona.

Funciona como indicado acima, apenas que sc_field_style({nome}, 'color:black'); deve ser passado um estilo, NM pode ter mexido no código interno, obrigando a passar uma propriedade para criar os atributos internamente que alteram o style do campo.

onscriptinit:

sc_field_style({nome}, 'color:black');
[iw] = new StdClass;
[iw]->hex = [0,1,2,3,4,5,6,7,8,9,'A', 'B', 'C', 'D', 'E', 'F'];
[iw]->color = '#BCE2';
[iw]->idx = 0;

onrecord:

[iw]->idx++;
[iw]->idx = [iw]->idx >15 ? 0 : [iw]->idx;
$hex = [iw]->hex[ [iw]->idx ];
$cor = [iw]->color.$hex.$hex;
$fonte = 'black';

$this->NM_field_style["nome"] = "background-color:$cor;color:$fonte;font-weight:bold;";  

2 Curtidas