Pular para o conteúdo principal

Postagens

Mostrando postagens de junho, 2013

Usando TFolder

Usar janelas com abas, dependendo da situação, pode ser inevitável. Segue um exemplo, usando TFolder : #include "TOTVS.CH" user function fFuncao1()     define dialog oDialogo title "Exemplo de TFolder" from 180,180 to 550,700 pixel     // Cria a Folder        aTFolder := { "Aba 01" , "Aba 02" , "Aba 03" }    oTFolder := tfolder():new( 0,0,aTFolder,,oDialogo,,,,.t.,,260,184 )     // Insere dois tget na aba 1    oSay:= tsay():new(1,2,{|| "Campo: " }, oTFolder:aDialogs[1],,,,,,.t.,CLR_RED,CLR_WHITE,96,9)    cTGet1 := "Campo TGet 01"    oTGet1 := tget():new( 1,25,{||cTGet1},oTFolder:aDialogs[1],96,9,;               "" ,,0,,,.f.,,.t.,,.f.,,.f.,.f.,,.f.,.f.,,cTGet1,,,, )    cTGet2 := "Campo TGet 02"    oTGet2 := tget():new( 20,25,{||cTGet2},oTFolder:aDialogs[1],96,9,;               "" ,,0,,,.f.,,.t.,,.f.,,.f.,.f.,,.f.,.f.,,cTGet2,,,, )     // Insere um t

Lendo arquivos XML

Mesmo antes, e desde que começamos a tratar notas fiscais eletrônicas(NFe) no Protheus, ocasionalmente, existe a necessidade de acessar dados, nos "nodes" de arquivos XML. No exemplo abaixo, foram lidos o conteúdo dos campos xNome (nome do destinatário) e dEmi (data de emissão), num .XML de uma nota fiscal eletrônica : # include "rwmake.ch" # include "xmlxfun.ch" user function fLexml ()     local cError := cWarning := cDestinatario := cDataEmissao := "" ,;          cNomearq := "\NFE\XML\nomearquivonotafiscal.xml" ,;            oNotaxml := xmlparserfile ( cNomearq, "" , @ cError, @ cWarning )     if cError # "" .or. cWarning # ""       alert ( "Erro: " + cError + "  -  Aviso: " + cWarning )     else       cDestinatario := alltrim( oNotaxml :_nfeProc:_NFe:_infNFe:_dest:_xNome:Text)       cDataEmissao   := alltrim( oNotaxml :_nfeProc:_NF

Barras de progresso

Segue um exemplo de como fazer barra de progresso, para ilustrar processos mais longos. Para isto, use  as funções  Processa , Procregua e Incproc . O exemplo abaixo, funciona. É só testar: # include "rwmake.ch" user function fFuncao1()    cRBSFQSQL := changequery( "SELECT COUNT(A1_COD) AS NREGISTRO FROM SA1010 WHERE A1_NOME LIKE 'A%'" )    dbusearea(.t., 'TOPCONN' , tcgenqry(,,cRBSFQSQL), 'TMPSA1' , .f., .t.)     if .not. TMPSA1->( eof ())       processa ( {|| u_fFuncao2( TMPSA1->NREGISTRO ) }, "Titulo" , "Processando aguarde..." , .f.)     endif    dbclosearea( "TMPSA1" ) return nil user function fFuncao2(nRegistros)     local cRegistros := ""     procregua (nRegistros)    cRBSFQSQL := changequery( "SELECT A1_COD, A1_NOME FROM SA1010 WHERE A1_NOME LIKE 'A%'" )    dbusearea(.t., 'TOPCONN' , tcgenqry(,,cRBSFQSQL), 'TMPSA2' , .f., .t.)

Language / Idioma

Prezados amigos, de outros países, que acessam este blog, Já está disponível, um Gadget para traduzir nossos textos para :  Português, Espanhol e Inglês. Queridos amigos, en otros países, el acceso a este blog, Ya está disponible, un Gadget para traducir nuestros textos para :  Portugués, Español e Inglés. Dear friends, from other countries, accessing this blog, Is already available, a Gadget to translate our texts for : Portuguese, Spanish and English.

Somando Strings

Se houver necessidade de somar strings sem ter que convertê-las, use a função somastr() . Para usar, a sintaxe é a seguinte: somastr(cVal1 , cVal2 ) , onde cVal1 e cVal2 são string's numéricas que você quer somar. Segue um exemplo: cStr1 := "500" cStr2 := "800" cSoma := somastr ( cStr1, cStr2 ) O resultado, guardado em cSoma será "1300" .

Usando o TOTVSMNTLIC

Use o TOTVSMNTLIC para abrir o License Server Monitor . Com ele, você pode monitorar os tipos de licenças existentes bem como quantas e quais já foram consumidas. Para executá-lo, chame o Smartclient sem nenhum parâmetro, e  digite  TOTVSMNTLIC  no campo 'Programa inicial' e clique Ok.

Executando rotinas ao abrir um módulo

Para executar uma rotina ao abrir um módulo do Protheus, basta você criar uma função com o nome do módulo . No exemplo abaixo, é mostrada uma mensagem ao entrar no módulo financeiro: user function SIGAFIN()    msgalert( "Entrou no módulo Financeiro." ) return nil Faça o teste, e experimente também com outros módulos ( SIGALOJA, SIGAFAT e SIGAEST ).