quarta-feira, 6 de julho de 2016

WinDev - Impressão , Pdf, Margens








http://blogs.pcsoft.fr/blogs.awp


A maioria das impressoras têm margens físicas de vários milímetros, e por vezes mais de um centímetro. Por exemplo, se a margem de impressão deixada é de 4 mm, fisicamente unidades da impressora não pode imprimir na região de papel 0-4 mm, mesmo com uma chamada de função iMargin com zero de a margem esquerda, o início da impressão será de 4 mm a partir da borda esquerda.

PDF tem uma moldura vermelha corresponde exatamente com as margens físicas da impressora padrão configurado ao executar o código:

Quando programada edição destina-se apenas para a produção de um documento de PDF, pode ser vantajoso utilizar toda a superfície das páginas. Um truque de conseguir isso é simplesmente selecionar antes de editar a impressora do sistema "Microsoft XPS Document Writer." Na verdade, o piloto de impressora "virtual" para a vantagem de não ter de margem, ou o formato até mesmo definir. Podemos criar um documento sem margens ou com um tamanho de papel que não é aceite por uma impressora padrão. O seguinte código idêntico ao anterior, com a excepção de a escolha do controlador, torna possível representar os resultados:


Publié par

15:45 Lundi
04 Juil. 2016



[Billet publié dans le blog Le blog du ST]
La majeure partie des imprimantes disposent de marges physiques de quelques millimètres, et parfois de plus d'un centimètre. Par exemple si la marge gauche d'une imprimante est de 4 mm, physiquement les mécanismes d'entraînement de l'imprimante ne peuvent imprimer dans la zone de 0 à 4 mm du papier, même avec un appel de la fonction iMarge avec zéro pour la marge gauche, le début de l'impression sera à 4 mm du bord gauche.

Il est possible de se représenter les marges physiques d'une imprimante avec le code suivant :

iMarge(0,0,0,0)
iDestination(iPDFGénérique , "c:\temp\imp_marge.pdf")
iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu)
iImprimeZone("Le cadre tient compte de la marge physique de l'imprimante",0,10, iLargeurPage(), iHauteurPage(),iHaut+iCentreH)
iFinImprime ()
LanceAppliAssociée("c:\temp\imp_marge.pdf")

Le PDF obtenu aura un cadre rouge correspondant exactement aux marges physiques de l'imprimante configurée par défaut lors de l'exécution du code :

Lorsqu'une édition programmée est destinée uniquement à la production d'un document PDF, il peut être intéressant d'utiliser toute la surface des pages. Une astuce pour y parvenir consiste tout simplement à sélectionner avant l'édition l'imprimante système "Microsoft XPS Document Writer". En effet, ce pilote "virtuel" d'imprimante à l'avantage de n'avoir aucun marge, ni même de format imposé. On peut donc créer un document sans aucune marge, ou avec un format de papier qui ne serait pas accepté par une imprimante standard. Le code suivant identique au précédent, à l'exception du choix du pilote, permet de se représenter le résultat :

iConfigure("Microsoft XPS Document Writer")
iMarge(0,0,0,0)
iDestination(iPDF , "c:\temp\imp_sans_marge.pdf")
iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu)
iImprimeZone("Aucune marge le cadre est bien placé en 0x0 du document",0,10, iLargeurPage(), iHauteurPage(),iHaut+iCentreH)
iFinImprime ()

Le PDF obtenu a bien le cadre sur les bords du document :

Un cas pratique dans lequel ce pilote est utile : découper un PDF de N pages en N PDF d'une seule page. Sans utiliser ce pilote, le contenu des pages obtenues est décalé suivant les marges physiques de l'imprimante en cours. Exemple d'un code de découpage d'un PDF, conservant strictement la position des données du document PDF d'origine :

sFichierPDF est une chaîne = "<chemin>\PDF-N-PAGES.pdf"
sUnePagePDF est une chaîne
MonImage est une Image
iConfigure("Microsoft XPS Document Writer")
iMarge(0,0,0,0)
iParamètrePDF("","",iQualitéMaximale)
POUR nPage = 1 _A_ PDFNombreDePages(sFichierPDF)
 MonImage = PDFExtraitPage(sFichierPDF, nPage)
 sUnePagePDF = fExtraitChemin(sFichierPDF,fDisque+fRépertoire+fFichier)+"-"+nPage+".pdf"
 iDestination(iPDF,sUnePagePDF)
 iImprimeImage(MonImage,0,0,iLargeurPage(),iHauteurPage(),iAffichageNormal)
 iFinImprime()
FIN
















Curso WinDev - Tabela - 030 - Tabela - Fazer Titulos com Colunas










Video youtube


Nessa aula vou mostrar como Melhorar Titulo Tabela

This lesson will show you how to improve Title Table

Cette leçon va vous montrer comment améliorer Titre Table



WinDev - Tabela - 001/... Ancorar Tabela e coluna
WinDev - Tabela - 002/... Esconder ou Mostrar Coluna Tabela 
WinDev - Tabela - 003/... Mudar Cor e Fundo da Coluna da Tabela 
WinDev - Tabela - 004/... Mudar Largura e Fonte da Coluna da Tabela 
WinDev - Tabela - 005/... Coluna de valor Deixar em Branco 
WinDev - Tabela - 006/... Alterar Nome,Cor,Cor de Fundo da Coluna da Tabela 
WinDev - Tabela - 007/... Alterar ordem das Colunas por Programacao
WinDev - Tabela - 008/... TableSeek Pesquizar se Existe
WinDev - Tabela - 009/... TableSelectPlus - Seleciona Iten tabela
WinDev - Tabela - 010/... TableSort - Classifica Coluna
WinDev - Tabela - 011/... Zoom
WinDev - Tabela - 012/... for Each Row Of - Percorrer
WinDev - Tabela - 013/... Selecionar Varias Linhas
WinDev - Tabela - 014/... Balao - Tabela ToolTip
WinDev - Tabela - 015/... Coluna Contrainer
WinDev - Tabela - 016/... Sum - Como Mudar Nome
WinDev - Tabela - 017/... TableInfoXY - Saber Nome,Posição e Linha da Coluna 
WinDev - Tabela - 018/... Guardar e Recuperar Posição Tabela
WinDev - Tabela - 019/... TableInputsearch
WinDev - Tabela - 020/... Descobrir Posição cliente Novo
WinDev - Tabela - 021/... Saber quantos e nome das Colunas
WinDev - Tabela - 022/... Tableselect - Selecionar varias linhas tabela e Ler
WinDev - Tabela - 023/... BuildBrowsingTable - Cria Tabela Manual
WinDev - Tabela - 024/... Somar Valor Tabela Automatico ou Manual - rowtotal
WinDev - Tabela - 025/... Eventos no cabecalho da Tabela
WinDev - Tabela - 026/... Tabela - Break - Totalizadores
WinDev - Tabela - 027/... Tabela - Colorir Linha
WinDev - Tabela - 028/... Double click Na seleção Item
WinDev - Tabela - 029/... Tabela - Descrição, Em Varias Linhas Coluna Tabela
WinDev - Tabela - 030/... Tabela - Fazer titulos com colunas
WinDev - Tabela - 031/... Tabela - Sql - Query - Agrupar Datas Nas Notas
































terça-feira, 5 de julho de 2016

Curso WinDev - Xml - 004 - Ler xml Aula 3/...









Nessa aula vou mostrar como ler um xml

This lesson will show how to read a xml

Cette leçon montre comment lire un xml


Video youtube



WinDev - Xml - 001/... Criar um Xml
WinDev - Xml - 002/... Ler Xml Aula 1/...
WinDev - Xml - 003/... Ler Xml Aula 2/...
WinDev - Xml - 004/... Ler Xml Aula 3
WinDev - Xml - 005/... XmlRead - Retirar Tag
WinDev - Xml - 006/... Sefaz Gratuito-Ler Xml Cliente/Gravar



Tag Retirar - XmlRead - WinDev - Xml - 005/...
WinDev - Xml - 001/... Criar um Xml
WinDev - Xml - 002/... Ler Xml Aula 1/...
WinDev - Xml - 003/... Ler Xml Aula 2/...
WinDev - Xml - 004/... Ler Xml Aula 3
Sefaz Gratuito-Ler Xml Cliente/Gravar - WinDev - Xml - 006/...




//("xml","/nfeProc/protNFe/infProt/chNFe")
//("xml","/nfeProc/NFe/infNFe/ide/nNF")
//fazer a pesquisa e mostrar // do research and show //  faire des recherches et spectacle

EDT_ChaveNota=pesquisa("chNFe",EDT_xml)
EDT_numero_nota=pesquisa("nNF",EDT_xml)


//vou fazer uma procedure interna pesquisa tag // i will make an internal tag search procedure
// je vais faire une procédure tag de recherche interne

    INTERNAL PROCEDURE pesquisa(_recebe_tag,_recebe_arquivo_xml)
       //vou criar string texto inicial e final //i will create string start and ent text
       //je vais créer début de chaîne et le texte final
       _texto_inicial is string="<"+_recebe_tag+">"
       _texto_final is string="</"+_recebe_tag+">"
       //criar uma posicao inicial e final //create an initital and final position //créer une position initiale et finale
       _posicao_inicial is int=0
       _posicao_final is int=0
       //vou pegar a posição inicial // i´ll get the startion position //je vais prendre la position de départ
       _posicao_inicial=PositionOccurrence(_recebe_arquivo_xml,_texto_inicial,firstRank,FromBeginning)+Length(_texto_inicial)
       //vou pegar a posição final // i´ll get the final position // je vais prendre la position finale
       _posicao_final=PositionOccurrence(_recebe_arquivo_xml,_texto_final,firstRank,FromBeginning)
       //vou verificar se posição final maior inicial // i will check if initial higher end position // je vais vérifieir si la position iniale de haut de gamme
       IF _posicao_final>_posicao_inicial THEN
                //vou pegar o conteudo da tag // i´ll take the content of the tag   //je vais prendrer le contenu de la balise
                RESULT Middle(_recebe_arquivo_xml,_posicao_inicial,_posicao_final-_posicao_inicial)
           ELSE
                RESULT ""
           END
          
    END
   























segunda-feira, 4 de julho de 2016

Curso WinDev - Xml - 003 - Ler xml Aula 2/...









Video youtube




Nessa aula, vou mostrar como ler xml com XmdDocument

In this lesson, I will show how to read XML with XmlDocument

Dans cette leçon, je vais vous montrer comment lire XML avec XmlDocument

http://doc.windev.com/en-US/?1000018782&name=TYPE_xmlDocument
http://doc.pcsoft.fr/fr-FR/?1000018782&name=xmldocument_type_variable


sDocumento is string=EDT_xml
//Vou abrir o xml // i Will open the xml // je vais ouvrir le xml
XMLDocument("xml",sDocumento)
XMLFind("xml",Null,XMLContinue+XMLChildItem)

//Acima exemplo do xml pegar chave nfe // Above example xml get key nfe // Au-dessus exemple xml obtenir nfe clé
EDT_ChaveNota=XMLRead("xml","/nfeProc/protNFe/infProt/chNFe")
//Vamos pegar numero nota fiscal // let-s take number invoice // prenons facture numéro
EDT_numero_nota=XMLRead("xml","/nfeProc/NFe/infNFe/ide/nNF")
//<?xml version="1.0" encoding="UTF-8"?>
//<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
//<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
//<infNFe Id="NFe43160689054050000165550010011405341015943286" versao="3.10">
//<ide>
//<cUF>43</cUF>
//<cNF>01594328</cNF>
//<natOp>VENDA MERCADORIAS SUBST. TRIBUTARIA</natOp>
//<indPag>1</indPag>
//<mod>55</mod>
//<serie>1</serie>
//<nNF>1140534</nNF>
//<dhEmi>2016-06-24T00:00:00-03:00</dhEmi>
//Vamos pegar a data emissao// let´s get the date issuance  // obtenons i´émission de date
s_data_emissao is string=XMLRead("xml","/nfeProc/NFe/infNFe/ide/dhEmi")
//2016-06-24
//1234567890
//Vou transformar data string em data// i´ll turn string date date // je vais chaîne de date jour tourne
d_data_emissao is Date=""
d_data_emissao..Day=s_data_emissao[[9 TO 10]]
d_data_emissao..Month=s_data_emissao[[6 TO 7]]
d_data_emissao..Year=s_data_emissao[[1 TO 4]]
EDT_data_emissao=d_data_emissao
//vou fazer o mesmo para cnpj e numero nota fiscal //i will do the same for cnpj number and invoice
// je vais faire la meme chose pour le numéro de cnpj et la facture
EDT_cnpj_emitente=XMLRead("XML","/nfeProc/NFe/infNFe/emit/CNPJ")
EDT_cnpj_destinatario=XMLRead("XML","/nfeProc/NFe/infNFe/dest/CNPJ")
IF EDT_cnpj_destinatario="" THEN
    EDT_cnpj_destinatario="CPF:"+XMLRead("XML","/nfeProc/NFe/infNFe/dest/CPF")
END
EDT_valor_nota_fiscal=XMLRead("XML","/nfeProc/NFe/infNFe/total/ICMSTot/vNF")




















WinDev - Xml - 001/... Criar um Xml
WinDev - Xml - 002/... Ler Xml Aula 1/...
WinDev - Xml - 003/... Ler Xml Aula 2/...
WinDev - Xml - 004/... Ler Xml Aula 3
WinDev - Xml - 005/... XmlRead - Retirar Tag
WinDev - Xml - 006/... Sefaz Gratuito-Ler Xml Cliente/Gravar



Tag Retirar - XmlRead - WinDev - Xml - 005/...
WinDev - Xml - 001/... Criar um Xml
WinDev - Xml - 002/... Ler Xml Aula 1/...
WinDev - Xml - 003/... Ler Xml Aula 2/...
WinDev - Xml - 004/... Ler Xml Aula 3
Sefaz Gratuito-Ler Xml Cliente/Gravar - WinDev - Xml - 006/...


Teste

Teste
teste