Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
17 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 17 Visitantes :: 1 Motor de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
ListBox

23/5/2017, 10:37 por Rosangela Pires

Ola Amigos.

Para se movimentar na grid com as setas colocamos no Metodo AfterChange da grid …

Comentários: 0

TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Estatísticas
Temos 7081 usuários registrados
O último usuário registrado atende pelo nome de DENISON SANTOS DA SILVA

Os nossos membros postaram um total de 49 mensagens em 26 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 89 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

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