sábado, 13 de janeiro de 2018

WINDEV Usando o Novo Controle Processador de Texto WP







https://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/2786-usando-novo-controle-processador-texto/read.awp



Usando o Novo Controle Processador de Texto WP



Publicado em dezembro, 10 2017 - 11:38 AM



O Controle Processador de Texto integrado apartir do WinDev22 vem revolucionando a Ferramenta.
Apresenta conceitos interessantes e é possível através dele Criar e Editar documentos com extenção .Docx.
Apresenta uma Tools Barr similar a Barra de Ferramentas do MS Word, mas ainda com recursos limitados.

Quem deseja utilizá-la como fazia com os Controles RTF, precisará observar alguns pontos:
1) Não dá pra vincular diretamente o Controle a um Campo Memo (Binário) de uma Tabela .FIC;
2) Não foi possível vincular um Menu PopUp (Menu de Contexto);
3) As Funções de Tratamento de Textos e Strings não funcionam sobre este Controle.

● Mas há muita coisa boa e já adianto que os pontos de 1 e 3 são superados via Programação.
4) Para receber o conteúdo de um Campo Binário com um Texto Formatado, devemos fazer vis Código;
5) Para atuar nos Caracteres do WP devemos usar Funções Própria DOC... (veremos mais adiante)
6) Imprimir e/ou Exportar um WP ficou mais seguro que fazê-lo com RTF, que apresentava alguns BUGs.

I - Como atribuir um WP Control a um Campo Binário?
WP_Editor..Value = Contrato.Contrato

<NameControl>..Value = <Tabela>.<Campo>
Claro que o desenvolvedor deve se preoculpar em Localizar na Tabela o Registro específico que deseja,
observe a sequência de códigos:
HReadSeekFirst(Contrato,ContratoID,EDT_Id_Contrato)
HReadSeekFirst(Cliente,ClienteID,1)

WP_Editor..Value = Contrato.Contrato

DocReplace(WP_Editor,"wladi","Wlady",IgnoreCase)
DocReplace(WP_Editor,"@Nome_Cliente",Cliente.Cli_Nome)
DocReplace(WP_Editor,"@RG_cliente",Cliente.RG,IgnoreCase)
DocReplace(WP_Editor,"@CPF_CLIENTE",Cliente.CPF,IgnoreCase)


II - Salvando um WP Control em um Campo Binário
// Primeiro devemos Salvar o Documento MS-Word
DocSave(WP_Editor,"temp.doc")

// Na sequência salvamos como um Arquivo normal, mas fazendo uso do Load Buffer
HReset(Contrato)
Contrato.Contrato_Titulo = EDT_Contrato_Titulo
Contrato.Contrato = fLoadBuffer("temp.doc") // Este Código é muito Necessário
HSave(Contrato)


III - Criando um Documento em Branco
// Criando um Documento em Branco
WP_Editor = ""


IV - Algumas Semelhanças com Funções Strings e Funções WP
Você já deve ter percebido no código acima que:
Replace() foi subistituído por DocReplace()

● Inserindo um Texto no WP
// Criando o Texto que deverá ser inserido no Documento WP
sInitialText is string = [
Visão Geral
O WINDEV é um ambiente de desenvolvimento que opera em um ambiente Windows.
]

// Recupere o fragmento correspondente que é encontrado no início do controle de processamento de texto
TextFragment is a docFragment(WP_Editor,WP_Editor..Cursor,0)

// Adiciona o Fragmento de Texto, neste caso, o texto é adicionado no início do nosso documento
TextFragment..Text += sInitialText


● Selecionando um Texto no WP
// Primeiro, encontramos tosdos os Fragmentos que contém o Texto "Visão Geral" a ser subistituído
arrFragments is array of docFragment = DocSeek(WP_Editor, "Visão Geral")

// Se um único elemento foi encontrado, selecione-o
IF arrFragments..Occurrence = 1 THEN
// Posição do Cursor
WP_Editor..Cursor = arrFragments[1].StartPosition
// Calcula o Tamanho da Seleção
WP_Editor..SelectionLength = arrFragments[1].EndPosition-arrFragments[1].StartPosition+1
END


● Alterando um Texto no WP com a Função: DocReplace()
// Função DocReplace deve ser usada para Alterar o Texto
DocReplace(WP_Editor,"Visão Geral","VISÃO GERAL",WholeWord)


● Alterando a Cor do Texto Selecionado
// Recupera a seleção do usuário
TextFragment is a docFragment(WP_Editor,WP_Editor..Cursor, WP_Editor..SelectionLength)

// Mudando a Cor do Fragmento Selecionado
TextFragment..MiseEnForme..TextColor = LightRed

// Várias modificações de estilo estão disponíveis nos atributos de estilo do DocFragment


● Alterando a Fonte do Texto Selecionado
...
// Mudando a Fonte do Fragmento Selecionado
TextFragment..MiseEnForme..FontName = "Arial"


● Alterando o Tamanho da Fonte do Texto Selecionado
...
// Redimenciona o Tamenho da Fonte
TextFragment..MiseEnForme..FontSize += 2


● Alterando para Negrito, Itálico e Sublinhado o Texto Selecionado
...
// Mudando para Negrito, Itálico e Sublinhado o DocFragment
TextFragment..MiseEnForme..FontBold = True
TextFragment..MiseEnForme..FontItalic = True
TextFragment..MiseEnForme..FontUnderlined = True


● Centralizar um Texto Selecionado
// Recupera a seleção do usuário
TextFragment is a docFragment(WP_Editor,WP_Editor..Cursor, WP_Editor..SelectionLength)

// Encontra o DocParagraph associado com a selecção

// Mostra o Elemento do docFragment
FOR EACH MyCurrentElement OF TextFragment.Element

// Use o elemento para encontrar o parágrafo associado
MyParagraph is a docParagraph = MyCurrentElement.Paragraphe

// Altera o layout, várias propriedades estão disponíveis
// neste caso, Queremos centralizar o parágrafo
MyParagraph..PageLayout..Alignment = haCenter

// O fragmento que representa a seleção do usuário, pode ter vários palavras selecionadas pelo usuário, 
// portanto, continue o loop para centralizá-las
END



Amigos, espero que tenham apreciado o Texto.

--





Teste

Teste
teste