Oi Naldo, beleza? Taí em anexo uma função nova para nossos visitantes do BlackTDN utilizarem. Assim que possível você publica? Obrigado e a braços, Robson Luiz – Rleg |
//--------------------------------------------------------------
/*/{Protheus.doc} xFwMsgRun
Modelo que exemplifica o uso da função FwMsgRun.
@param oObj Variável de objeto exportável onde a função FwMsgRun irá executar.
@param bBlock Codeblock com a instrução a ser executada enquanto a mensagem fica a mensagem para o usuário.
@param cTitle Título da mensagem - não obrigatório.
@param cMessage Mensagem enquanto processa a função passada no Codeblock - não obrigatória.
@author Robson Luiz - Rleg
@since 05.09.2013
@version 1.0
/*/
//--------------------------------------------------------------
#Include "Protheus.ch"
User Function xFwMsgRun()
Local oDlg
Local oFld
Local oPnl1, oPnl2, oPnl3, oPnl4
Local oButton1, oButton2, oButton3, oButton4, oButton5, oButton6
Local cTitulo := 'Processando'
Local cMsg := 'Aguarde, processando a rotina'
DEFINE MSDIALOG oDlg TITLE 'FwMsgRun' FROM 0, 0 TO 550, 800 PIXEL
@ 1,1 MSPANEL oPnl1 PROMPT '' SIZE 100,100 OF oDlg RAISED
oPnl1:Align := CONTROL_ALIGN_ALLCLIENT
@ 4,80 FOLDER oFld SIZE 300,200 OF oPnl1 ITEMS 'Pasta1','Pasta2' PIXEL
@ 1,1 MSPANEL oPnl2 PROMPT 'oPanel do folder 1' SIZE 300,42 OF oFld:aDialogs[1] RAISED
oPnl2:Align := CONTROL_ALIGN_ALLCLIENT
@ 220,80 MSPANEL oPnl3 PROMPT '' SIZE 300,40 OF oPnl1 RAISED
@ 1, 1 MSPANEL oPnl4 PROMPT 'oPanel' SIZE 300,40 OF oPnl3 RAISED
oPnl4:Align := CONTROL_ALIGN_ALLCLIENT
@ 04,2 BUTTON oButton1 PROMPT 'Objeto Próprio 1' SIZE 60, 12 OF oPnl1 ACTION FWMsgRun(, {|oSay| Process( oSay ) }) PIXEL
@ 20,2 BUTTON oButton2 PROMPT 'Objeto Próprio 2' SIZE 60, 12 OF oPnl1 ACTION FWMsgRun(, {|oSay| Process( oSay ) }, cTitulo, cMsg ) PIXEL
@ 36,2 BUTTON oButton3 PROMPT 'Objeto Dialog' SIZE 60, 12 OF oPnl1 ACTION FWMsgRun(oPnl1, {|oSay| Process( oSay ) } ) PIXEL
@ 52,2 BUTTON oButton4 PROMPT 'Objeto Folder' SIZE 60, 12 OF oPnl1 ACTION FWMsgRun(oPnl2, {|oSay| Process( oSay ) } ) PIXEL
@ 68,2 BUTTON oButton5 PROMPT 'Objeto Panel' SIZE 60, 12 OF oPnl1 ACTION FWMsgRun(oPnl4, {|oSay| Process( oSay ) } ) PIXEL
@ 84,2 BUTTON oButton6 PROMPT 'Sair' SIZE 60, 12 OF oPnl1 ACTION oDlg:End() PIXEL
ACTIVATE MSDIALOG oDlg CENTER
Return
//------------------------------------
// Função que simula um processamento.
//------------------------------------
Static Function Process( oSay )
Local nX := 0
Sleep(2000)
For nX := 1 to 5
oSay:cCaption := ('Contador ' + StrZero(nX, 2))
ProcessMessages()
Sleep(1000)
Next nX
Return
Grande RLEG! Estava louco para saber sobre essa função, valeu mais um vez!
ResponderExcluirAlbatroz/SP
Estava procurando essa função !!!
ResponderExcluirMuito bom !
Abs
LMS
nao entendi o que faz essa função
ResponderExcluirEste comentário foi removido pelo autor.
ExcluirCaio,
ExcluirO Protheus 11 possui esta nova funcionalidade que serve para enquanto há um processamento sendo executado ficará na interface do usuário uma janela pequena com um circulo girando no sentido horário e outro no sentido anti-horário. Este código é apenas um exemplo, você pode copiá-lo e executar no seu ambiente, após o entendimento você poderá aplicar em suas rotinas convenientes para esta situação.
Att.
Rleg
boa Rleg
ResponderExcluirDesvende este erro no server ...
************************ (ADM6,adm6) ************************
SrvMap in Query - Statement ignored.[thread: 2488]
[environment: environment]
[remark: Emp :01/02 Logged :AV6 SIGAFAT Obj :MATA410 - Pedidos de Venda]
on CLEANALLFILTER(APLIB070.PRW) 27/05/2013 17:34:49 line : 1018
Called from __EXECUTE(APLIB090.PRW) 19/07/2013 15:45:55 line : 588
Called from FWPREEXECUTE(FWPREEXECUTE.PRW) 17/08/2011 18:06:36 line : 65
Called from {|| FWPreExecute('Pedidos de Venda', 'MATA410()', 1, '05', 'xxxxxxxxxx') } line : 182
Called from ::TWINDOW:ACTIVATE
Called from MSAPP:ACTIVATE(FWAPP.PRW) 29/07/2013 15:04:35 line : 529
Called from SIGAADV(APLIB000.PRW) 27/05/2013 17:13:48 line : 54
E aí Marcão, tudo bem? Cara, coloquei esse erro na minha bola de cristal e não deu retorno, logo juntei tudo e coloquei no caldeirão do bruxo e também não deu nada. Mas olha só, o erro é apontado em uma função da APLIB070 que são controladas pelo Framework, sugiro trocar o RPO e aplicar os path de atualização. Abraços e boa sorte! Rleg.
ResponderExcluirBoa tarde.
ResponderExcluirApos executar esta rotina varias vezes, acontece um erro com a mensagem abaixo :
"Maximum number of components per window exceeded"
Pelo jeito em toda execução, internamente acontece um Objeto:New() ou seja em toda execução é criado o objeto e não é destruido no final da execução.
Isto ja aconteceu com vc ?
Rleg , Obrigado pela contribuição