Exemplos Script de Operação¶
Ocultar coluna da spread¶
Ocultando algumas colunas da spread, o metodo ocultarColunas recebe a spread e os indices das colunas a serem ocultadas
Atenção
Este script somente OCULTA a coluna, sendo assim é necessário considerar a mesma na contagem do indice
@Override
public void execute(MultitecRootPanel tarefa) {
MSpread sprEaa0103s = getComponente("sprEaa0103s");
ocultarColunas(sprEaa0103s, 0, 1, 2, 3, 4, 5);
}
Ocultar campo livre da spread¶
Adiciona um evento ao perder o foco do campo de tipo de documento
, pode ser alterado para outro campo
ou evento, para remover um campo livre da spread.
Atenção
Sempre passar o nome do campo no banco (Ex.: eaa01json) seguido de . (ponto) e o nome do campo livre
@Override
public void execute(MultitecRootPanel tarefa) {
MNavigationController nvgAah01codigo = getComponente("nvgAah01codigo");
nvgAah01codigo.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
MSpread sprEaa0103s = getComponente("sprEaa0103s");
ocultarColunas(sprEaa0103s, "eaa0103json.vlr_total_docum", "", "");
}
});
}
Alterar tamanho da tela¶
Altera o tamanho da tela, largura e altura.
@Override
public void execute(MultitecRootPanel tarefa) {
Window tela = tarefa.getWindow();
tela.setBounds((int) tela.getBounds().x, (int) tela.getBounds().y, (int) tela.getBounds().width, (int) tela.getBounds().height + 50);
}
Sobreescrever metodo windowLoad¶
O metodo windowLoad é executado no momento que a tela está sendo carregada, algumas alterações em tela precisam ser feitas após esse metodo.
Atenção
Lembre-se de sempre executar o windowLoad original antes do seu codigo
public class Script extends sam.swing.ScriptBase{
public Runnable windowLoadOriginal;
@Override
public void execute(MultitecRootPanel tarefa) {
this.windowLoadOriginal = tarefa.windowLoad ;
tarefa.windowLoad = {novoWindowLoad()};
}
protected void novoWindowLoad(){
this.windowLoadOriginal.run();
// Execute seu codigo aqui, validação, alteração etc...
}
}
Sobreescrever metodo cancelar¶
Sobrescrever o metodo cancelar de uma tela. Podendo ser usado para validações ou processar dados.
Atenção
Lembre-se de sempre executar o cancelar original depois do seu codigo
public class Script extends sam.swing.ScriptBase{
public Runnable cancelarOriginal;
@Override
public void execute(MultitecRootPanel tarefa) {
this.cancelarOriginal = tarefa.cancelar;
tarefa.cancelar = {novoCancelar()};
}
protected void novoCancelar(){
throw new ValidacaoException("Validação ao cancelar")
this.cancelarOriginal.run()
}
}
Abrir uma outra tarefa¶
Pode abrir uma nova tarefa ao disparar algum evento, clique em um botão ou alguma condição.
public class Script extends sam.swing.ScriptBase{
private MultitecRootPanel tarefa;
@Override
public void execute(MultitecRootPanel tarefa) {
this.tarefa = tarefa;
}
private void abrirTarefaSCV2002() {
try {
SCV2002 scv2002 = new SCV2002();
WindowUtils.createJDialog(scv2002.getWindow(), scv2002);
scv2002.open.run();
} catch (Exception err) {
ErrorDialog.defaultCatch(this.tarefa.getWindow(), err);
}
}
}
Alterar função F5 da spread¶
É possível executar uma função após o F5 em uma spread, servindo para validar ou preencher algum campo de forma automatica.
class Script extends sam.swing.ScriptBase{
@Override
public void execute(MultitecRootPanel tarefa) {
MSpread sprAbe0101s = getComponente("sprAbe0101s");
sprAbe0101s.f5Consumer = sprAbe0101s.f5Consumer.andThen({f5Consumer()});
}
public Consumer<Integer> f5Consumer() {
MSpread sprAbe0101s = getComponente("sprAbe0101s");
MTextFieldString txtAbe01ni = getComponente("txtAbe01ni");
MTextFieldString txtAbe01ie = getComponente("txtAbe01ie");
sprAbe0101s.setValueAt(txtAbe01ni.getValue(), 0, "abe0101ni");
sprAbe0101s.setValueAt(txtAbe01ie.getValue(), 0, "abe0101ie");
}
}
Desabilitar campo de navegação¶
Desabilitando campo de navegação
private void desabilitarTipo(Eaa01 eaa01){
MNavigation nvgAah01codigo = getComponente("nvgAah01codigo");
nvgAah01codigo.setEnabled(false);
nvgAah01codigo.setEditable(false);
}
Adicionar função no menu cancelar¶
Adiciona uma nova função na opção cancelar alem da função default.
class Script extends sam.swing.ScriptBase{
@Override
public void execute(MultitecRootPanel tarefa) {
tarefa.getWindow().getJMenuBar().getMnuArquivo().getMniCancelar().addActionListener(mnu -> this.mniCancelarActionListener(mnu));
}
protected void mniCancelarActionListener(ActionEvent evt) {
if(!exibirQuestao("Deseja realmente sair sem SALVAR?")) interromper("Por favor salvar antes de SAIR.");
}
}
Sobreescrever KeyListener de componentes¶
É possível sobreescrever o KeyListener de um determinado componente.
Atenção
Lembre-se de sempre executar o KeyListener original antes ou depois do seu codigo.
class Script extends sam.swing.ScriptBase{
private KeyListener[] keyListenersOriginais
@Override
public void execute(MultitecRootPanel tarefa) {
MTextFieldString txtColetar = getComponente("txtColetar");
this.keyListenersOriginais = txtColetar.getKeyListeners();
if(this.keyListenersOriginais != null && this.keyListenersOriginais.size() > 0){
for(KeyListener listener in this.keyListenersOriginais){
txtColetar.removeKeyListener(listener)
}
}
txtColetar.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
keyListenerCustom(e);
}
}
});
}
public void keyListenerCustom(KeyEvent event){
//Realize sua logica aqui antes do KeyListener original
if(this.keyListenersOriginais != null && this.keyListenersOriginais.size() > 0){
for(KeyListener listener in this.keyListenersOriginais){
listener.keyPressed(event)
}
}
//Realize sua logica aqui depois do KeyListener original
}
}
Desabilita campo livre¶
class DesabilitarCampoLivre extends sam.swing.ScriptBase{
def exibirRegistroPadrao;
public void execute(MultitecRootPanel tarefa) {
this.exibirRegistroPadrao = tarefa.exibirRegistro
tarefa.exibirRegistro = {exibir(tarefa)}
}
private void exibir(MultitecRootPanel tarefa){
this.exibirRegistroPadrao.accept(tarefa.registro)
def pnlCamposLivresJSON = getComponente("pnlCamposLivresJSON");
def jsonPanels = pnlCamposLivresJSON.getJsonComponentPanels();
for (jsonPanel in jsonPanels) {
def nomeCampo = jsonPanel.getComponent().getName();
if(nomeCampo == "texto") {
jsonPanel.getComponent().getComponent().setEnabled(false);
}
}
}
}