Macro sc_field_readonly no grid view editável

Olá Pessoal,
Estou com a seguinte situação:

Estou utilizando uma grid view editável, tem um determinado campo do formulário que ao editar/dar update este campo só pode ficar aberto para edição caso ele esteja com o valor 0 ou nulo, este campo utiliza um Lookup de edição com sql.

No evento onload do form estou utilizando essa macro para deixar os campos readonly, mas dessa forma na edição ele já desabilita o campo independente do valor…

if (sc_btn_new){
sc_field_readonly ({vtr_atendimento}, off);
}else{
sc_field_readonly ({vtr_atendimento}, on);
}

Alguma sugestão dos senhores? obrigado,
Abraços

isso só funciona para formulário único registro.

Boa tarde! Fiz um teste aqui no meu scriptcase e funcionou. Testa assim:

if (sc_btn_new)
{
sc_field_readonly({vtr_atendimento});
}
else
{
sc_field_readonly({vtr_atendimento}, ‘off’);
}

Espero ter ajudado!

1 Curtida

Sim ajudou funcionou, obrigado, mas será que agora eu consigo por exemplo fazer com que este campo não fique em readonly somente quando o valor for zero?
por exemplo colocar algum tipo de condição nesta macro?
obrigado,

Bom dia! Sim… só mudar a condição do seu if ai

1 Curtida

Sugiro verificar a macro sc_field_disabled_record, que atua na linha e não em todo o formulário.

O uso dessa macro pode ser encontrado na aplicação do módulo de segurança: app_form_sec_groups_apps, no evento onLoadRecord.

sc_field_readonly se aplica a todo o formulário, por isso essa macro é mais aconselhada em formulário único registro.

1 Curtida

O problema é que essa macro sc_field_disabled_record ela desabilita a digitação no campo, porém ela continua processando o campo no caso quando este é do tipo Select e tem um comando select para ele processsar.
Eu fiz o teste, ele desabilita porém continua processando o select, com isso muda o resultado no banco, era isso que eu queria evitar. Com o realonly ele consegue fazer isso porém o problema que é para todo o formulário.

Precisei hoje em um formulário Grid ai usei sc_field_readonly o if bloqueava todas as linhas.

Ai ajustei para a macro sc_field_disabled_record e ficou 100% Scriptcase 9.6.011:

Bloquear Digitação - Formulários Únicos:

sc_field_readonly({Suspenso}, 'on'); // on = Bloquear / off = Liberar

sc_field_readonly({Suspenso}, 'on');
sc_field_readonly({FuncionarioSenha}, 'on');
sc_field_readonly({BaixadoDataHora}, 'on');

if (VALIDAR_DATA({DataHora},'Y-m-d H:i:s')) {
	
	sc_field_readonly({Suspenso}, 'off');
	sc_field_readonly({FuncionarioSenha}, 'off');
	sc_field_readonly({BaixadoDataHora}, 'off');
	
	if ({Aprovado}=='Sim') {
		sc_field_readonly({Suspenso}, 'on');
	}
	
	if (!empty({BaixadoUsuario})) {		
		
		sc_field_readonly({Suspenso}, 'on');
		sc_field_readonly({FuncionarioSenha}, 'on');
		sc_field_readonly({BaixadoDataHora}, 'on');
	}	
		
}



Formulários GRIDs:

sc_field_disabled_record("Suspenso=true"); // true = Bloquear / false = Liberar

sc_field_disabled_record("Suspenso=true");
sc_field_disabled_record("FuncionarioSenha=true");
sc_field_disabled_record("BaixadoDataHora=true");

if (VALIDAR_DATA({DataHora},'Y-m-d H:i:s')) {
	
	sc_field_disabled_record("Suspenso=false");
	sc_field_disabled_record("FuncionarioSenha=false");
	sc_field_disabled_record("BaixadoDataHora=false");		
	
	if ({Aprovado}=='Sim') {
		sc_field_disabled_record("Suspenso=true");
	}
	
	if (!empty({BaixadoUsuario})) {		
		
		sc_field_disabled_record("Suspenso=true");
		sc_field_disabled_record("FuncionarioSenha=true");
		sc_field_disabled_record("BaixadoDataHora=true");
		
	}	
		
}
1 Curtida