Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
10 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Ajuda a direcionar
8/12/2016, 01:17 por miiiih

» Alterar uma palavra num arquivo de texto
5/12/2016, 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6964 usuários registrados
O último usuário registrado atende pelo nome de Ricardo Cassolatto

Os nossos membros postaram um total de 17119 mensagens em 2577 assuntos

Word x Visual Foxpro

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Anexo Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:39

Segue uma rotina para manipulação de arquivos do Microsoft Office Word.
A rotina se divide em algumas classes que poderão ser, ou não, utilizadas. Dependerá do objetivo.
Peço que se houver algum ajuste, favor comunicar para que tornemos esta rotina mais robusta.

Estou disponibilizando o pacote completo para download e a rotina postada, no caso de um link estar quebrado futuramente, e também para mais detalhes.
Espero ter ajudado!
Anexos
WordApplication.zip Você não tem permissão para fazer download dos arquivos anexados.(10 Kb) Baixado 85 vez(es)


Última edição por Marcos Guedes em 16/5/2010, 12:51, editado 1 vez(es)

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:40

Classe WordAPP: Esta classe manipula os principais recursos do Microsoft Office Word.

Código:
DEFINE CLASS wordapp AS CUSTOM

   HIDDEN objword AS WORD.APPLICATION
   HIDDEN objdocument AS OBJECT && documento ativo
   HIDDEN objrange AS OBJECT && Controla o conteúdo do documento

   *!* Armazena uma coleção de documentos.
   *!* Útil caso haja necessidade de criar mais de um documento.
   HIDDEN colecaodocumentos AS COLLECTION

   PROCEDURE novodocumento AS void
      *!* Cria um novo documento
      THIS.objdocument = THIS.objword.documents.ADD()
      THIS.objrange = THIS.objdocument.RANGE()

      *!* Adiciona o documento na coleção
      THIS.colecaodocumentos.ADD(THIS.objdocument)
   ENDPROC

   PROCEDURE mudardocumento AS logical
      LPARAMETERS qualdocumento AS INTEGER
      *!* Muda para um outro possível documento aberto.
      *!* Neste caso deve ser fornecido o número de ordem em que o documento foi gerado
      IF (m.qualdocumento <= THIS.colecaodocumentos.COUNT) THEN
         THIS.objdocument = THIS.colecaodocumentos.ITEM(m.qualdocumento)
         THIS.objrange = THIS.objdocument.RANGE()
      ENDIF
   ENDPROC

   PROCEDURE salvardocumento AS void
      LPARAMETERS caminho AS STRING
      IF (VARTYPE(m.caminho)=="C") THEN
         *!* Se especificar o caminho, então salvará
         *!* do documento no local indicado . (Opção Salvar Como...)
         THIS.objdocument.SAVEAS(m.caminho)
      ELSE
         *!* Não especificando o caminho, salvará
         *!* o documento com o mesmo nome. (Opção Salvar)
         *!* Obs: Supõe-se que o documento já foi salvado anteriormente.
         THIS.objdocument.SAVE()
      ENDIF
   ENDPROC

   PROCEDURE fechardocumento AS void
      LPARAMETERS caminho AS STRING

      IF (VARTYPE(m.caminho)=="C") THEN
         *!* Se especificar o caminho,
         *!* então salvará o documento e
         *!* logo em seguida será fechado.
         THIS.objdocument.SAVEAS(m.caminho)
         THIS.objdocument.CLOSE()
      ELSE
         *!* Caso o caminho não seja especificado,
         *!* então fecha o documento sem salvá-lo.
         THIS.objdocument.CLOSE(.F.)
      ENDIF
   ENDPROC

   PROCEDURE abrirdocumento AS logical
      LPARAMETERS caminhoarquivo AS STRING, senhaarquivo AS STRING
      *!* Abre um documento com senha.
      *!* Se o arquivo não estiver protegido, o segundo parâmetro não fará diferença.

      IF (VARTYPE(m.senhaarquivo)!="C") THEN
         m.senhaarquivo = ""
      ENDIF

      THIS.objdocument = THIS.objword.documents.OPEN(m.caminhoarquivo,,,,m.senhaarquivo)
      THIS.objrange = THIS.objdocument.RANGE()
      THIS.colecaodocumentos.ADD(THIS.objdocument)
   ENDPROC

   PROCEDURE aplicarsenha AS void
      LPARAMETERS senha AS STRING
      *!* Aplica a senha ao documento
      THIS.documentoword.PASSWORD = m.senha
   ENDPROC

   PROCEDURE wordvisivel AS void
      LPARAMETERS visivel AS OBJECT
      *!* Define se a aplicação estará visível, ou não.
      THIS.objword.VISIBLE = m.visivel
   ENDPROC

   PROCEDURE fecharword AS void
      *!* Fecha a aplicação
      *!* A aplicação não é fechada ao destruir o objeto,
      *!* pois poderá haver uma necessidade de exibir o documento,
      *!* após criar/editar o documento.
      THIS.objword.QUIT()
   ENDPROC

   FUNCTION documentosativos AS INTEGER
      *!* Retorna a quantidade de documentos que estão sendo utilizados
      RETURN THIS.colecaodocumentos.COUNT
   ENDFUNC

   FUNCTION getobjrange AS OBJECT
      *!* Retorna o objeto "THIS.objrange" para ser
      *!* usado com a classe "WordWrite", por exemplo.
      RETURN THIS.objrange
   ENDFUNC
   
   FUNCTION getobjdocument AS OBJECT
      *!* Retorna o objeto "THIS.objdocument" para ser
      *!* usado com a classe "WordDocument", por exemplo.
      RETURN THIS.objdocument
   ENDFUNC   

   HIDDEN PROCEDURE INIT AS void
      THIS.colecaodocumentos = NEWOBJECT("Collection")

      THIS.objword = NEWOBJECT("Word.Application")
      THIS.wordvisivel(.F.) && Invisível por padrão.
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.objword = NULL
      THIS.colecaodocumentos = NULL
   ENDPROC

ENDDEFINE

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:41

Classe WordDocument: E classe é responsável pela configuração do documento.

Código:
DEFINE CLASS worddocument AS CUSTOM

   HIDDEN objdocument AS OBJECT

   *!* ************************************** *!*
   *!* 1px equivale a 0,04cm, aproximadamente *!*
   *!* ************************************** *!*

   PROCEDURE espacamento_entre_linhas AS void
      LPARAMETERS espacamento AS INTEGER
      *!* Define o espaçamento entre linhas
      *!* m.espacamento=0: 1.0
      *!* m.espacamento=1: 1.5
      *!* m.espacamento=2: 2.0
      *!* outros: 3 à 5
      THIS.objdocument.paragraphs.linespacingrule = m.espacamento
   ENDPROC
   
   PROCEDURE espacamento_antes AS void
      LPARAMETERS espacamento AS INTEGER
      *!* Define o "espaçamento antes"
      THIS.objdocument.paragraphs.SpaceBefore = m.espacamento
   ENDPROC
   
   PROCEDURE espacamento_depois AS void
      LPARAMETERS espacamento AS INTEGER
      *!* Define o "espaçamento depois"
      THIS.objdocument.paragraphs.SpaceAfter = m.espacamento
   ENDPROC

   PROCEDURE setarmargemsuperior AS void
      LPARAMETERS margem AS DOUBLE
      *!* Altera a margem superior da página
      THIS.objdocument.pagesetup.topmargin = m.margem
   ENDPROC

   PROCEDURE setarmargeminferior AS void
      LPARAMETERS margem AS DOUBLE
      *!* Altera a margem inferior da página
      THIS.objdocument.pagesetup.bottommargin = m.margem
   ENDPROC

   PROCEDURE setarmargemesquerda AS void
      LPARAMETERS margem AS DOUBLE
      *!* Altera a margem esquerda da página
      THIS.objdocument.pagesetup.leftmargin = m.margem
   ENDPROC

   PROCEDURE setarmargemdireita AS void
      LPARAMETERS margem AS DOUBLE
      *!* Altera a margem direita da página
      THIS.objdocument.pagesetup.rightmargin = m.margem
   ENDPROC

   PROCEDURE setarorientacao AS void
      LPARAMETERS orientacao AS DOUBLE
      *!* Altera a orientação da página
      *!* orientacao=1 : retrato
      *!* orientacao=2 : paisagem
      THIS.objdocument.pagesetup.ORIENTATION = m.orientacao
   ENDPROC

   PROCEDURE setartamanhopapel AS void
      LPARAMETERS tamanho AS INTEGER
      *!* Altera o tamanho do papel
      *!* tamanho =  0: 10x14
      *!* tamanho =  1: 11x17
      *!* tamanho =  2: Letter
      *!* tamanho =  3: Letter Small
      *!* tamanho =  4: Legal
      *!* tamanho =  5: Executive
      *!* tamanho =  6: A3
      *!* tamanho =  7: A4
      *!* tamanho =  8: A4 Small
      *!* tamanho =  9: A5
      *!* tamanho = 10: B4
      *!* tamanho = 11: B5
      *!* tamanho = 12: CSheet
      *!* tamanho = 13: DSheet
      *!* tamanho = 14: ESheet
      *!* tamanho = 15: Fanfold Legal German
      *!* tamanho = 16: Fanfold Std German
      *!* tamanho = 17: Fanfold US
      *!* tamanho = 18: Folio
      *!* tamanho = 19: Ledger
      *!* tamanho = 21: Quarto
      *!* tamanho = 22: Statement
      *!* tamanho = 23: Tabloid
      *!* tamanho = 24: Envelope 9
      *!* tamanho = 25: Envelope 10
      *!* tamanho = 26: Envelope 11
      *!* tamanho = 27: Envelope 12
      *!* tamanho = 28: Envelope 14
      *!* tamanho = 29: Envelope B4
      *!* tamanho = 30: Envelope B5
      *!* tamanho = 31: Envelope B6
      *!* tamanho = 32: Envelope C3
      *!* tamanho = 33: Envelope C4
      *!* tamanho = 34: Envelope C5
      *!* tamanho = 35: Envelope C6
      *!* tamanho = 36: Envelope C6
      *!* tamanho = 37: Envelope DL
      *!* tamanho = 38: Envelope Italy
      *!* tamanho = 39: Envelope Monarch
      *!* tamanho = 40: Envelope Personal
      *!* tamanho = 41: PaperCustom

      THIS.objdocument.pagesetup.PAPERSIZE = m.tamanho
   ENDPROC

   PROCEDURE setarmodelopadrao AS void
      *!* Define o formato padrão do documento.
      THIS.setarmargemsuperior(70.8499985) && 2,5cm
      THIS.setarmargeminferior(70.8499985) && 2,5cm
      THIS.setarmargemesquerda(85.0500031) && 3cm
      THIS.setarmargemdireita(85.0500031) && 3cm
      THIS.setartamanhopapel(7)
      THIS.setarorientacao(0)
   ENDPROC

   HIDDEN PROCEDURE INIT AS void
      LPARAMETERS objdocument AS OBJECT
      *!* Recebe o objeto "objdocument" da classe WordAPP
      THIS.objdocument = m.objdocument
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.objdocument = NULL
   ENDPROC

ENDDEFINE

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:41

Classe WordWrite: Esta classe manipula os principais recursos de escrita num arquivo do Word.

Código:
DEFINE CLASS wordwrite AS CUSTOM

   HIDDEN objrange AS OBJECT && Objeto da classe WordAPP

   HIDDEN negrito AS logical
   HIDDEN italico AS logical
   HIDDEN sublinhado AS logical
   HIDDEN fonte_nome AS STRING
   HIDDEN fonte_tamanho AS INTEGER
   HIDDEN fonte_cor AS LONG && A função GETCOLOR() retorna um resultado válido
   HIDDEN alinhamento AS INTEGER
   HIDDEN espacamento_linhas as Integer
   HIDDEN espacamento_antes as Integer
   HIDDEN espacamento_depois as Integer

   PROCEDURE escrevertexto AS void
      LPARAMETERS conteudo AS STRING
      *!* Escreve o texto com a formatação definida
      THIS.objrange.insertafter(conteudo)      
      this.aplicarFormatacao()
   ENDPROC
   
   PROCEDURE aplicarFormatacao as VOID
      THIS.objrange.FONT.bold = THIS.negrito
      THIS.objrange.FONT.italic = THIS.italico
      THIS.objrange.FONT.underline = THIS.sublinhado
      THIS.objrange.FONT.NAME = THIS.fonte_nome
      THIS.objrange.FONT.SIZE = THIS.fonte_tamanho
      THIS.objrange.FONT.COLOR = THIS.fonte_cor
      THIS.objrange.paragraphs.ALIGNMENT = THIS.alinhamento      
      this.objrange.ParagraphFormat.LineSpacingRule = this.espacamento_linhas
      this.objrange.ParagraphFormat.SpaceBefore = this.espacamento_antes
      this.objrange.ParagraphFormat.SpaceAfter = this.espacamento_depois
   ENDPROC
   
   PROCEDURE confirmaEscrita as VOID
      *!* Este comando deverá ser utilizado SEMPRE que
      *!* uma formatação/escrita for concluída.
      *!* Esta marca o fim de uma formatação, e também
      *!* o preparo para outra formatação ser atribuída ao conteúdo
      *!* Exemplo:
      *!*         escrevertexto("Linha 1")
      *!*         quebrarlinhatexto(1)
      *!*         escrevertexto("Linha2")
      *!*         confirmaEscrita()
      THIS.objrange.collapse( 0 ) && Marca o fim da formatação
   ENDPROC
   
   PROCEDURE confirmaParagrafo as VOID
      *!* Este comando deverá ser utilizado SEMPRE que
      *!* um parágrafo for finalizado.
      *!* Este finaliza o parágrafo posicionado,
      *!* dando início a outro
      *!* Exemplo:
      *!*         escrevertexto("Linha 1")
      *!*         quebrarlinhatexto(1)
      *!*         escrevertexto("Linha2")
      *!*         confirmaEscrita()
      *!*          confirmaParagrafo()
      THIS.objrange.InsertParagraphAfter() && Marca o fim do parágrafo
   ENDPROC
   
   PROCEDURE quebrarlinhatexto AS logical
      LPARAMETERS quantaslinhas AS INTEGER
      LOCAL contador AS INTEGER
      *!* Quebra uma quantidade específica de linha.
      *!* Equivalente ao ENTER

      IF (VARTYPE(m.quantaslinhas)!="N") THEN
         m.quantaslinhas = 1
      ENDIF

      FOR m.contador=1 TO m.quantaslinhas
         THIS.objrange.insertafter(CHR(13)+CHR(10))         
      ENDFOR
   ENDPROC
   
   PROCEDURE incluirTab AS logical
      LPARAMETERS quantos AS INTEGER
      LOCAL contador AS INTEGER
      *!* Equivalente ao TAB

      IF (VARTYPE(m.quantos)!="N") THEN
         m.quantos = 1
      ENDIF

      FOR m.contador=1 TO m.quantos
         THIS.objrange.insertafter(CHR(9))
      ENDFOR
   ENDPROC

   PROCEDURE setnegrito AS void
      LPARAMETERS negrito AS logical
      *!* Define a formatação negrito
      THIS.negrito = m.negrito
   ENDPROC

   PROCEDURE setitalico AS void
      LPARAMETERS italico AS logical
      *!* Define a formatação itálico
      THIS.italico = m.italico
   ENDPROC

   PROCEDURE setsublinhado AS void
      LPARAMETERS sublinhado AS logical
      *!* Define a formatação sublinhado
      THIS.sublinhado = m.sublinhado
   ENDPROC

   PROCEDURE setfontenome AS void
      LPARAMETERS cnome AS STRING
      *!* Define o nome da fonte do conteúdo
      THIS.fonte_nome = m.cnome
   ENDPROC

   PROCEDURE setfontetamanho AS void
      LPARAMETERS tamanho AS INTEGER
      *!* Define o tamanho da fonte do conteúdo
      THIS.fonte_tamanho = m.tamanho
   ENDPROC

   PROCEDURE setalinhamento AS void
      LPARAMETERS alinhamento AS Integer
      *!* m.alinhamento=0 : esquerda
      *!* m.alinhamento=1 : centro
      *!* m.alinhamento=2 : direita
      *!* m.alinhamento=3 : justificativo
      *!* outros  : 4 a 9
      THIS.alinhamento = m.alinhamento
   ENDPROC
   
   PROCEDURE setEspacamentoLinhas AS void
      LPARAMETERS espacamento AS STRING
      *!* espacamento=0 : 1,0
      *!* espacamento=1 : 1,5
      *!* espacamento=2 : 2,0
      *!* outros  : 3 a 5
      THIS.espacamento_linhas = m.espacamento
   ENDPROC
   
   PROCEDURE setEspacamentoAntes AS void
      LPARAMETERS espacamento AS STRING
      *!* Parágrafo: espaçamento antes
      THIS.espacamento_antes = m.espacamento
   ENDPROC
   
   PROCEDURE setEspacamentoDepois AS void
      LPARAMETERS espacamento AS STRING
      *!* Parágrafo: espaçamento depois
      THIS.espacamento_depois = m.espacamento
   ENDPROC
   
   PROCEDURE setarestilopadrao AS void
      *!* Estilo padrão para o documento
      THIS.setnegrito(.F.)
      THIS.setitalico(.F.)
      THIS.setsublinhado(.F.)
      THIS.setfontenome("Times New Roman")
      THIS.setfontetamanho(12)
      THIS.setalinhamento(0)
      this.setEspacamentoLinhas(1)
      this.setEspacamentoAntes(0)
      this.setEspacamentoDepois(0)
   ENDPROC

   HIDDEN PROCEDURE INIT AS void
      LPARAMETERS objrange AS OBJECT
      *!* Recebe um objeto "objrange" da classe "WordAPP"
      THIS.objrange = m.objrange
      THIS.setarestilopadrao()
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.objrange = NULL
   ENDPROC

ENDDEFINE

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:42

Classe WordBorder: E classe é responsável pela manipulação de bordas no conteúdo.

Código:
DEFINE CLASS wordborder AS CUSTOM

   HIDDEN objrange AS OBJECT

   PROCEDURE aplicarborda_todas AS void
      LPARAMETERS qtipo AS INTEGER
      *!* Aplica bordas ao texto
      *!* Estilo da borda do texto
      *!* m.qtipo=0: nenhum
      *!* m.qtipo=1: normal
      *!* m.qtipo=2: pontilhado
      *!* outros: 3 a 24
      THIS.objrange.BORDERS.outsidelinestyle = m.qtipo
*      THIS.objrange.Paragraphs.Item(1).Borders.outsidelinestyle = m.qtipo
   ENDPROC
   
   PROCEDURE bordaSobreada AS void
      LPARAMETERS sombra as Logical
      *THIS.objrange.Borders.Shadow = m.sombra
      THIS.objrange.Paragraphs.Item(1).Borders.Shadow = m.sombra
   ENDPROC   

   PROCEDURE aplicarborda_independente AS void
      LPARAMETERS qualborda AS INTEGER, qtipo AS INTEGER
      *!* Poderá ser usada para aplicar uma
      *!* borda específica ao conteúdo.

      *!* m.qualborda=1: SUPERIOR
      *!* m.qualborda=2: ESQUERDA
      *!* m.qualborda=3: INFERIOR
      *!* m.qualborda=4: DIREITA

      *!* m.qtipo=0: nenhum
      *!* m.qtipo=1: normal
      *!* m.qtipo=2: pontilhado
      *!* outros: 3 a 24
*      THIS.objrange.BORDERS.ITEM(m.qualborda).linestyle = m.qtipo
      THIS.objrange.Paragraphs.Item(1).BORDERS.ITEM(m.qualborda).linestyle = m.qtipo
   ENDPROC

   PROCEDURE espacamentoborda AS void
      LPARAMETERS qualborda AS INTEGER, espacamento AS INTEGER
      *!* Poderá ser usada para aplicar um espaçamento
      *!* a uma borda específica do conteúdo.

      *!* m.qualborda=1: SUPERIOR
      *!* m.qualborda=2: ESQUERDA
      *!* m.qualborda=3: INFERIOR
      *!* m.qualborda=4: DIREITA

      *!* m.espacamento: de 0 à 31
      IF ( (VARTYPE(m.qualborda)=="N") AND (VARTYPE(m.espacamento)=="N") AND ;
            (m.qualborda>=1) AND (m.qualborda<=4) AND ;
            (m.espacamento>=0) AND (m.espacamento<=31) ) THEN
         DO CASE
            CASE (m.qualborda=1)
               *THIS.objrange.BORDERS.distancefromtop = m.espacamento
               THIS.objrange.Paragraphs.Item(1).BORDERS.distancefromtop = m.espacamento
            CASE (m.qualborda=2)
               *THIS.objrange.BORDERS.distancefromleft = m.espacamento
               THIS.objrange.Paragraphs.Item(1).BORDERS.distancefromleft = m.espacamento
            CASE (m.qualborda=3)
               *THIS.objrange.BORDERS.distancefrombottom = m.espacamento
               THIS.objrange.Paragraphs.Item(1).BORDERS.distancefrombottom = m.espacamento
            CASE (m.qualborda=4)
               *THIS.objrange.BORDERS.distancefromright = m.espacamento
               THIS.objrange.Paragraphs.Item(1).BORDERS.distancefromright = m.espacamento
            OTHERWISE
         ENDCASE
      ENDIF
   ENDPROC

   PROCEDURE setarestilopadrao AS void
      *!* Formatação padrão para as bordas do texto
      THIS.aplicarborda_todas(0)
   ENDPROC

   HIDDEN PROCEDURE INIT AS void
      LPARAMETERS objrange AS OBJECT
      *!* Recebe um objeto "objrange" da classe "WordAPP"
      THIS.objrange = m.objrange
      THIS.setarestilopadrao()
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.objrange = NULL
   ENDPROC

ENDDEFINE

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:43

Classe WordTable: E classe é responsável pela manipulação de tabelas no documento.

Código:
DEFINE CLASS wordtable AS CUSTOM

   HIDDEN objdocument AS OBJECT
   HIDDEN objrange AS OBJECT
   HIDDEN tabelaposicionada AS OBJECT
   
   *!* Armazena as tabelas criadas no documento
   *!* Pode ser usado para acessar a tabela conforme a ordem em que foi inserida
   HIDDEN colecaotabela AS COLLECTION

   PROCEDURE getrangececula AS void
      *!* Retorna o objeto Range da cécula solicitada
      LPARAMETERS linha AS INTEGER, coluna AS INTEGER
      RETURN THIS.tabelaposicionada.cell(m.linha, m.coluna).RANGE()
   ENDPROC   

   PROCEDURE aplicarbordaexterna_todas AS void
      LPARAMETERS qtipo AS INTEGER
      *!* Aplica bordas externa à tabela
      *!* Estilo da borda do texto
      *!* m.qtipo=0: nenhum
      *!* m.qtipo=1: normal
      *!* m.qtipo=2: pontilhado
      *!* outros: 3 a 24
      THIS.tabelaposicionada.BORDERS.outsidelinestyle = m.qtipo
   ENDPROC

   PROCEDURE aplicarbordainterna_todas AS void
      LPARAMETERS qtipo AS INTEGER
      *!* Aplica bordas interna à tabela
      *!* Estilo da borda do texto
      *!* m.qtipo=0: nenhum
      *!* m.qtipo=1: normal
      *!* m.qtipo=2: pontilhado
      *!* outros: 3 a 24
      THIS.tabelaposicionada.BORDERS.insidelinestyle = m.qtipo
   ENDPROC

   FUNCTION inserirtabela AS OBJECT
      *!* Insere uma nova tabela ao documento
      LPARAMETERS numerolinhas AS INTEGER, numerocolunas AS INTEGER
      LOCAL tabela AS OBJECT
      m.tabela = THIS.objdocument.TABLES.ADD(THIS.objrange, m.numerolinhas, m.numerocolunas)

      THIS.colecaotabela.ADD(m.tabela) && Adiciona a tabela criada à coleção
      THIS.tabelaposicionada = m.tabela

      RETURN m.tabela && Retorna o objeto que manipulará a tabela criada
   ENDFUNC

   FUNCTION mudartabela AS OBJECT
      *!* Muda a tabela a qual está sendo trabalhada
      LPARAMETERS qualtabela AS INTEGER
      *!* m.qualtabela é a ordem em que a tabela foi incluída ao documento
      IF (m.qualtabela <= THIS.colecaotabela.COUNT) THEN
         THIS.tabelaposicionada = THIS.colecaotabela(m.qualtabela)
      ENDIF
      RETURN THIS.tabelaposicionada
   ENDFUNC

   HIDDEN PROCEDURE INIT AS void
      LPARAMETERS objdocument AS OBJECT, objrange  AS OBJECT
      *!* Recebe o objeto "objdocument" e também
      *!* o objeto "objrange" da classe WordAPP
      THIS.colecaotabela = NEWOBJECT("Collection")
      THIS.objdocument = m.objdocument
      THIS.objrange = m.objrange
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.objdocument = NULL
      THIS.objrange = NULL
      THIS.colecaotabela = NULL
   ENDPROC

ENDDEFINE

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Marcos Guedes em 14/7/2009, 13:44

Demo: Uma simples demonstração de como utilizar a classe WordAPP e suas auxiliares.

Código:
WAIT WINDOW "Gerando arquivo..." NOWAIT NOCLEAR

LOCAL objword AS "WordAPP"
LOCAL objdocumento AS "WordDocument"
LOCAL objEscrever as "WordWrite" && Objeto responsável por escreve no documento
LOCAL objEscreveTabela as "WordWrite" && Objeto responsável por escreve no documento
LOCAL objBordas as "WordBorder"
LOCAL objTabela as "WordTable"
LOCAL objdocument AS OBJECT && Documento onde será trabalhado
LOCAL objrange AS OBJECT && Range do documento
LOCAL objRangeTabela as Object && Range da tabela

m.objword = NEWOBJECT("WordAPP", "WordAPP.prg") && Instancia da classe "WordAPP"

m.objword.novodocumento() && Cria um novo documento
*!* Recebe o valor do objeto "objdocument", o qual é
*!* responsável pela manipulação do documento ativo.
m.objdocument = m.objword.getobjdocument()
*!* Recebe o valor do objeto "objRange", que manipulará a escrita no arquivo.
m.objrange = m.objword.getobjrange()

m.objdocumento = NEWOBJECT("WordDocument", "WordDocument.prg", NULL, m.objdocument) && Objeto responsável por manipular o documento.
m.objEscrever = NEWOBJECT("WordWrite", "WordWrite.prg", NULL, m.objrange) && Objeto responsável por manipular a escrita no documento.
m.objBordas = NEWOBJECT("WordBorder", "WordBorder.prg", NULL, m.objrange) && Objeto responsável por manipular bordas no conteúdo.

m.objdocumento.setarmargemesquerda(28.5) && Configura margem esquerda
m.objdocumento.setarmargemsuperior(34) && Configura margem superior
m.objdocumento.setarmargemdireita(28.5) && Configura margem direita
m.objdocumento.setarmargeminferior(34) && Configura margem inferior
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_depois(0)

m.objEscrever.setnegrito(.t.) && Texto em negrito
m.objEscrever.setfontenome("Arial") && Fonte arial para o texto a ser inserido
m.objEscrever.setfontetamanho(10) && Tamanho da fonte
m.objEscrever.escrevertexto("Trabalhando com o Microsoft Office Word") && Escreve um texto no documento
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0) && Espaçamento entre linhas = 1.0
m.objEscrever.confirmaEscrita() && Final da última formatação
m.objEscrever.confirmaParagrafo() && Finaliza o parágrafo

m.objEscrever.escrevertexto("http://forum.programacaobrasil.com")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0) && Espaçamento entre linhas = 1.0
m.objEscrever.quebrarlinhatexto(2) && 2 ENTER inseridos
m.objEscrever.confirmaEscrita() && Final da última formatação
m.objEscrever.confirmaParagrafo() && Finaliza o parágrafo

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("Este arquivo foi gerado utilizando a rotina WordApplication:")
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()
m.objBordas.aplicarborda_independente(3,1) && Aplica uma borda normal à parte inferior do texto
m.objBordas.espacamentoborda(3,0)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita() && Final da última formatação


m.objEscrever.setnegrito(.T.)
m.objEscrever.setfontetamanho(9)
m.objEscrever.escrevertexto("Autor: Marcos Guedes / [Você precisa estar registrado e conectado para ver este link.]")
m.objEscrever.quebrarlinhatexto(4)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.F.)
m.objEscrever.setfontetamanho(4)
m.objEscrever.escrevertexto("")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.T.)
m.objEscrever.setfontetamanho(12)
m.objEscrever.escrevertexto("Dados do estabelecimento")
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()
m.objBordas.aplicarborda_independente(3,1) && Aplica uma borda normal à parte inferior do texto
m.objBordas.espacamentoborda(3,0)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita() && Final da última formatação

m.objEscrever.setnegrito(.F.)
m.objEscrever.setfontetamanho(10)
m.objEscrever.escrevertexto("Empresa Optante pelo Simples")
m.objEscrever.incluirTab(2) && Incluindo 2 TAB's
m.objEscrever.escrevertexto("( x ) Sim")
m.objEscrever.incluirTab(2)
m.objEscrever.escrevertexto("(  ) Não")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Inscrição Municipal ")
m.objEscrever.incluirTab(7)
m.objEscrever.escrevertexto(CHR(9)) && Tab
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("Exercicio ")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.T.)
m.objEscrever.setfontetamanho(12)
m.objEscrever.escrevertexto("2009")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.F.)
m.objEscrever.setfontetamanho(10)
m.objEscrever.escrevertexto("Firma ou Razão Social")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Nome Fantasia")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Endereço")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Bairro")
m.objEscrever.incluirTab(5)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("Cep")
m.objEscrever.incluirTab(3)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("Fone")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Cidade")
m.objEscrever.incluirTab(2)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.T.)
m.objEscrever.escrevertexto("RECIFE")
m.objEscrever.incluirTab(2)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("Estado ")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.T.)
m.objEscrever.escrevertexto("PE")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("CNPJ")
m.objEscrever.incluirTab(5)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("CPF")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Insc.Estadual")
m.objEscrever.incluirTab(4)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("Nº de sócios")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Data de Abertura")
m.objEscrever.incluirTab(3)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()

m.objEscrever.escrevertexto("Capital Social Registrado")
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.escrevertexto("Descr.Atividade")
m.objEscrever.incluirTab(3)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.F.)
m.objEscrever.setfontetamanho(10)
m.objEscrever.escrevertexto("Atividade sujeita ao ISS")
m.objEscrever.incluirTab(2) && Incluindo 2 TAB's
m.objEscrever.escrevertexto("( x ) Sim")
m.objEscrever.incluirTab(2)
m.objEscrever.escrevertexto("(  ) Não")
m.objEscrever.quebrarlinhatexto(1)
m.objdocumento.espacamento_antes(6)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.T.)
m.objEscrever.setfontetamanho(12)
m.objEscrever.escrevertexto("Dados de todos os sócios da empresa")
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()
m.objBordas.aplicarborda_independente(3,1)
m.objBordas.espacamentoborda(3,0)
m.objdocumento.espacamento_entre_linhas(0)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setfontetamanho(10)
m.objEscrever.escrevertexto("Soc.1")
m.objEscrever.incluirTab(1)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("Nome")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("Endereço")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("CPF")
m.objEscrever.incluirTab(4)
m.objEscrever.escrevertexto("RG")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.T.)
m.objEscrever.escrevertexto("Soc.2")
m.objEscrever.incluirTab(1)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("Nome")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("Endereço")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("CPF")
m.objEscrever.incluirTab(4)
m.objEscrever.escrevertexto("RG")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.setnegrito(.T.)
m.objEscrever.escrevertexto("Soc.3")
m.objEscrever.incluirTab(1)
m.objEscrever.confirmaEscrita()

m.objEscrever.setnegrito(.F.)
m.objEscrever.escrevertexto("Nome")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("Endereço")
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

m.objEscrever.incluirTab(1)
m.objEscrever.escrevertexto("CPF")
m.objEscrever.incluirTab(4)
m.objEscrever.escrevertexto("RG")
m.objEscrever.quebrarlinhatexto(2)
m.objEscrever.confirmaEscrita()
m.objEscrever.confirmaParagrafo()

*!* Instancia o objeto responsável pela criação de tabelas no documento
m.objTabela = NEWOBJECT("WordTable", "WordTable.prg", null, m.objdocument, m.objrange)

*!* Insere uma tabela com uma linha e três colunas
m.objTabela.inserirtabela(1,3)
m.objTabela.aplicarbordaexterna_todas(1) && Aplica bordas normais do lado externo da tabela
m.objTabela.aplicarbordainterna_todas(2) && Aplica bordas pontilhadas do lado interno da tabela

*!* Preparando o objeto para escrever na primeira linha e primeira coluna
m.objRangeTabela = m.objTabela.getrangececula(1, 1)
m.objEscreveTabela = NEWOBJECT("WordWrite", "WordWrite.prg", NULL, m.objRangeTabela) && Objeto responsável por manipular a escrita na tabela.

m.objEscreveTabela.setnegrito(.T.)
m.objEscrever.setfontenome("Comic Sans MS")
m.objEscreveTabela.setfontetamanho(12)
m.objEscreveTabela.setalinhamento(1)
m.objEscreveTabela.escrevertexto("Escrevendo")
m.objEscreveTabela.quebrarlinhatexto()
m.objEscreveTabela.escrevertexto("na primeira coluna")
m.objEscreveTabela.quebrarlinhatexto()
m.objEscreveTabela.escrevertexto("da tabela")
m.objEscreveTabela.confirmaEscrita()

*!* Preparando o objeto para escrever na primeira linha e primeira coluna
m.objRangeTabela = m.objTabela.getrangececula(1, 3)
m.objEscreveTabela = NEWOBJECT("WordWrite", "WordWrite.prg", NULL, m.objRangeTabela) && Objeto responsável por manipular a escrita na tabela.

m.objEscreveTabela.setitalico(.T.)
m.objEscrever.setfontenome("Times New Roman")
m.objEscreveTabela.setfontetamanho(12)
m.objEscreveTabela.setalinhamento(2)
m.objEscreveTabela.escrevertexto("Escrevendo")
m.objEscreveTabela.quebrarlinhatexto()
m.objEscreveTabela.escrevertexto("na terceira coluna")
m.objEscreveTabela.quebrarlinhatexto()
m.objEscreveTabela.escrevertexto("da tabela")
m.objEscreveTabela.confirmaEscrita()

m.objword.wordvisivel(.T.) && Deixa o Word Visível

m.objrange = NULL
m.objdocument = NULL
m.objdocumento = NULL
m.objword = NULL

WAIT CLEAR
MESSAGEBOX("Arquivo gerado com sucesso!")

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Word x Visual Foxpro

Mensagem por Conteúdo patrocinado Hoje à(s) 07:42


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum