Pular para o conteúdo principal

Postagens

Usando Listbox

O nome do objeto é tComboBox , mas combo, vem de 'combinação', que no caso deveria permitir digitar no campo, e escolher numa lista, ao mesmo tempo. Como o campo criado por este tComboBox não permite digitar nada, eu o chamo de Listbox. Segue um exemplo, de como fazer listbox usando ADVPL: static function MinhaCombo() local nRBachou, aRBfil:={}, aRBfil2:={} private oDiag01, cCodfil, cOz4Cod @ 0, 0 to 300, 480 dialog oDiag01 title "Exemplo de Listbox" @ 5, 5 say "Filial:" dbselectarea("OZ4") OZ4->(dbgotop()) do while .not. OZ4->(eof()) nRBachou := aScan(aRBfil2, OZ4->OZ4_CODIGO) if nRBachou = 0 aadd(aRBfil2, OZ4->OZ4_CODIGO +" "+ OZ4->OZ4_DESC) endif OZ4->(dbskip()) enddo aRBfil := asort(aRBfil2) cOz4Cod := aRBfil[1] oCombo := tComboBox():new(5,60,{|u|if(pcount()>0,cOz4Cod:=u,cOz4Cod)},aRBfil,100,20,oDiag01,,{||fRBaltera(...

String para Vetor

A função split do vbscript , tem uma função equivalente em ADVPL: strtokarr ( expressao, delimitador ). É extremamente útil quando concatenamos uma série de strings e depois queremos organizar num vetor.  Teste o exemplo: cString := "02,03,04,05,06,07,08,09,10,11,12,13" aString := strtokarr (cString, "," ) for nString := 1 to len(aString)     msgalert(aString[nString]) next Veja também: Valores em extenso.

Trabalhando com FTP no Protheus

Trabalhar com FTP no Protheus é simples e muito útil, por exemplo, quando você quer trocar arquivos com filiais de sua empresa. As funções disponíveis para FTP são: FTPConnect Conexão com o servidor FTPDirChange Troca de diretório FTPDirectory Informações de diretórios e arquivos FTPDownload Copia arquivo para servidor local FTPErase Apaga arquivo no diretório FTPRenameFile Renomear arquivo no diretório corrente FTPUpload Copia arquivo da máquina local p/ diretório FTPDisconnect Fechamento da conexão atual Exemplo: 1: // CONECTA NO FTP 2: if .not. ftpconnect ("ftp.NOMEDESEUSERVIDOR.com.br", 21, getmv("MV_RSPFTPU"), getmv("MV_RSPFTPP")) 3: msgalert("NAO FOI POSSIVEL CONECTAR AO FTP.") 4: return .f. 5: endif 6: // MUDA PARA O DIRETORIO DESEJADO NO SERVIDOR REMOTO 7: if .not. ftpdirchange ("/NOMEDAPASTAREMOTA") 8: msgalert("NAO FOI POSSIVEL MUDAR PARA O DIRETORIO INFORMADO.") 9: return .f...

Pegando senhas dos usuários do Protheus 8

Para você que é ADMIN e, numa emergência, precise de uma rotina para pegar as senhas dos seus usuários do Protheus 8, segue uma rotina que faz isso e grava tudo num arquivo texto, sem criptografia. A rotina lê o arquivo SIGAPASS.SPF e grava o arquivo DADOSU.TXT na pasta TEMP (que deve ser criada dentro da pasta do Protheus). O arquivo contém o nome reduzido, senha e mais alguns dados. Use com responsabilidade: user function PegaSenhas() local aPswDet := "",; cArquivo, cPswFile := "sigapss.spf", cRBSFConct := cPswId := cPswName := cPswPwd := cPswDet := cUserId := "",; lEncrypt := .f.,; nArquivo, nPswRec := 0, nRBSFrec := SPF_RecCount(cPswFile, 1) psworder(1) for nId := 1 to nRBSFrec cUserId := strzero(nId,6) nPswRec := spf_seek(cPswFile,"1U"+cUserId, 1) if nPswRec > 0 spf_getfields(cPswFile, nPswRec, @cPswId, @cPswName, @cPswPwd, @cPswDet) aPswDet := str2array(cPswDet, lEncrypt) ...

Construção visual de telas em ADVPL

Gaia 2010 Gerador Auxiliar de Interface ADVPL Para quem não conhece, o programa Gaia pode ser uma boa ajuda na hora de criar telas para programas ADVPL. Você monta as telas visualmente como no Delphi ou VB e tem opção para transformar seu design em código ADVPL para adicionar em seu programa. Esta versão do Gaia está bem bacana (parabéns ao autor). O registro é gratuito (Freeware) e, de acordo com o autor, servirá apenas para o controle de usuários e aviso sobre atualizações.  Para fazer download, entre no link: http://mansano.com/gaia/ Veja também: •  Protheus: Criando tela de login personalizada. •  Editando Imagens no Protheus

Gráficos no Protheus

Gráficos no Protheus Usando a função MATGRAPH pode-se criar gráficos que serão montados a partir dos dados de um array ou de um arquivo de trabalho passado como parâmetro. Pode-se também escolher o tipo de gráfico com 2 ou 3 dimensões e visualizar em formato de linha, barra ou área. Para usar, use o include PROTHEUS.CH ou TOTVS.CH e inclua a função abaixo em seu programa, modificando-a da maneira que achar melhor: user function fRBSFgraf() local lGraph3D := .t. // .F. Grafico 2 dimensoes - .T. Grafico 3 dimensoes local lMenuGraph := .t. // .F. Nao exibe menu - .T. Exibe menu para mudar o tipo de grafico local lMudaCor := .t. local nTipoGraph := 2 local nCorDefault := 1 local aDados := {{"Valor 1", 100}, {"Valor 2", 500},{"Valor 3", 1000}} local aStru := {} local cArquivo := CriaTrab(,.f.) local i If MsgYesNo("Deseja exibir o grafico com os dados do array?")    // O grafico sera montado a partir dos dados do arr...

Editando imagens usando o Protheus

Você conhece a Classe TDrawer? Usando-a você pode abrir e manipular imagens com extensões BMP (Bitmap), JPG (Joint Photographic Group) e PNG (Portable Network Graphics). Para isto, basta você adicionar a função (exemplo abaixo), em seu programa (usar include TOTVS.CH ou PROTHEUS.CH), fazer a chamada a ela num botão e compilar. Segue a função: User Function TDrawer Private isText := .F. Private colors := {CLR_HRED, -1} // Linha Vermelha / Fundo Transparente DEFINE DIALOG oDlg TITLE "Exemplo TDrawer" FROM 180,180 TO 550,700 PIXEL // Menu de Opções oMenu := TMenu():New() oMenu:Add(TMenuItem():New(oMenu:Owner(),'Abre',,,,{||isText:=.F.,openFile()})) oMenu:Add(TMenuItem():New(oMenu:Owner(),'Salva',,,,{||isText:=.F.,saveFile()})) oMenu:Add(TMenuItem():New(oMenu:Owner(),'Texto',,,,{||isText:=.T.})) oMenu:Add(TMenuItem():New(oMenu:Owner(),'Selecao',,,,{||isText:=.F.,oDrawer:SetType(0)})) oMenu:Add(TMenuItem():New(oMenu:Owne...