Autor Tópico: Diferenças onApplicationInit, onScriptInit e onLoad  (Lida 2542 vezes)

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1642
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Diferenças onApplicationInit, onScriptInit e onLoad
« Online: Dezembro 22, 2012, 05:11:19 pm »
Notei que no webhelp trás assim:

onApplicationInit - Este evento é executado quando o aplicativo é carregado apenas pela primeira vez

onScriptInit - Este evento é executado quando o aplicativo está carregando

onLoad - Este evento ocorre quando a página é carregada, ou seja, quando estiver a navegar a partir de um registro para outro, clicando nos botões (novo, inserção, etc.)

Muitos iniciantes como eu se perdem nesta explicações simplistas do WebHelp.
E por vezes fazem coisas erradas como acessar as variáveis locais da aplicação no onScriptInit de um formulário.


Exemplo: Quero substituir o "campoteste" que tem seu conteúdo buscado na base de dados pela palavra "oi;"
 {campoteste} = "oi"; ---> Isto so vai funcionar no onLoad.
Se colocar no onApplicationInit ou no onScriptInit ele irá continuar a carregar a string do banco de dados. O único local onde permite eu trabalhar o campo após executad o sql é no onLoad

Por isto coloco aqui a explicação que achei mais válida e que encontrei no help dos metódos.

#####################################################################################################
onApplicationInit

Este evento ocorre antes da aplicação executar o SQL. Só é executada ao carregar a aplicação.
É usado para verificações de variáveis e para verificações de segurança.
Ex:
if ([glo_var_depto] != 'financeiro'){
sc_redir(app_x.php);
}

Notou a frase verificação de segurança e de variávieis? viu que ocorre antes da aplicação executar o SQL?

#####################################################################################################
onScriptInit

Para formulário: Este evento ocorre antes da inicialização do formulário, neste momento, as variáveis locais da aplicação, não estão disponíveis.

Para um formulário de controle: Este evento ocorre antes da inicialização do formulário de controle.

O código é executado antes que a aplicação seja iniciada, neste momento, as variáveis locais da aplicação, não estão disponíveis para uso. E o SQL ainda não foi executado.

Aqui o sql ainda não foi executado e se guardar algo em uma variável de campo o sql irá substituir o que você fez.
Também as variáveis locais não estão disponíveis.


#####################################################################################################
onLoad

Este evento é executado antes que o formulário seja carregado. Neste momento todas as variáveis da aplicação estão disponíveis.

Podemos neste evento mover alguns valores padrão para os campos do formulário.

Ex:
{empresa} = [glo_empresa];

//movendo uma variavel de sessão [glo_empresa] para o campo do form {empresa}.

#####################################################################################################

Espero que isto ajude os iniciantes como me ajudou.
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #1 Online: Dezembro 24, 2012, 12:39:10 am »
Show de bola Alexandre! Ajudou e muito! Parabéns pela iniciativa.

Grande abraço! :D
F. A.
Analista de Sistemas

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #2 Online: Dezembro 24, 2012, 07:40:06 am »
Parabéns Alexandre, boa explicação acredito que com um pouco de pesquisa os iniciantes encontram tudo que precisam aqui no forum.

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #3 Online: Dezembro 24, 2012, 10:17:24 am »
Começou a clarear.... a NM tem que contratar pessoas como vc para montar o webhelp deles...
Obrigado pela explanação. !
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

jacobju

  • Novato
  • *
  • Mensagens: 25
  • Empreendedor, Inovador e Consultor
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #4 Online: Setembro 20, 2013, 10:27:00 am »
Cara, muito bom, o post é antigo mas claro. parabens
Julio Cesar Jacob
Evangelista de TI - MCP/MCSE/LPIC-1&2/CCNA/ANP/XCP/Asterisk Professional
(55 21) 98452-1886
Skype juliocjacob

flagomesbh

  • Intermediário
  • ***
  • Mensagens: 131
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #5 Online: Abril 30, 2016, 04:33:29 pm »
Excelente explicação!

Mas tenho dúvida de onde inserir a seguinte lógica:

Ao clicar no botão "Novo", faço uma verificação de valores lançados no banco e gostaria de sugerir a diferença em um campo da tela. Ou seja: em um total de 400, verifico que já lancei 100 então já inicio a tela com o valor preenchido com 300.

Desde já, grata!
Flávia Gomes
- Aprendiz -

Jailton

  • Expert
  • *****
  • Mensagens: 2039
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #6 Online: Abril 30, 2016, 04:42:03 pm »
Excelente explicação!

Mas tenho dúvida de onde inserir a seguinte lógica:

Ao clicar no botão "Novo", faço uma verificação de valores lançados no banco e gostaria de sugerir a diferença em um campo da tela. Ou seja: em um total de 400, verifico que já lancei 100 então já inicio a tela com o valor preenchido com 300.

Desde já, grata!

No Evento: OnLoad
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

flagomesbh

  • Intermediário
  • ***
  • Mensagens: 131
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #7 Online: Abril 30, 2016, 05:16:14 pm »
Excelente explicação!

Mas tenho dúvida de onde inserir a seguinte lógica:

Ao clicar no botão "Novo", faço uma verificação de valores lançados no banco e gostaria de sugerir a diferença em um campo da tela. Ou seja: em um total de 400, verifico que já lancei 100 então já inicio a tela com o valor preenchido com 300.

Desde já, grata!

No Evento: OnLoad

Obrigada!!
Flávia Gomes
- Aprendiz -

Haroldo

  • Expert
  • *****
  • Mensagens: 6277
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #8 Online: Maio 02, 2016, 09:15:38 am »
Complementando a explicação:


onApplicationInit:

- não permite acessar os métodos e diversas macros.
- Pode iniciar Globais.

onScriptInit:

- Executada sempre na carga da aplicação, vale lembrar que em enventos ajax a aplicação é recarregada, então a onScriptInit é executada nos eventos ajax.
- Para controlar quando a onScriptInit é executada a primeira vez e nos eventos ajax utilize a flag interna:
 $this->NM_ajax_flag que para valor igual a 1 a execução vem de um evento ajax.

onLoad:
- Executada após a carga dos objetos e após o select principal da aplicação.
- Aqui você pode aplicar valores para os campos das aplicações, principalmente em campos calculados e campos em memória.

Marcelo Baptista

  • Intermediário
  • ***
  • Mensagens: 104
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #9 Online: Maio 02, 2016, 09:27:57 am »
Parabéns Alexandre, excelente explicação! Tenho certeza que ajudou muitos por aqui, sendo experientes ou não.

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1642
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Diferenças onApplicationInit, onScriptInit e onLoad
« Responder #10 Online: Maio 02, 2016, 11:59:56 am »
Obrigado Haroldo por complementar.
Obrigado Marcelo
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?