4D v17

WP Get position

Página Inicial

 
4D v17
WP Get position

WP Get position 


 

WP Get position ( objRange {; layout} ) -> Resultado 
Parâmetro Tipo   Descrição
objRange  Objeto in Referência de elemento ou range ou documento 4D Write |Pro
layout  Inteiro longo in Layout documento 4D Write Pro usado para avaliação: 0 (padrão) = 4D Write Pro layout; 1= HTML WYSWYG
Resultado  Objeto in Informação posição

O comando WP Get position devolve um objeto que descreve a posição atual de objRange.

No parâmetro objRange, pode passar:

  • uma range, ou
  • uma referência de elemento (tabela / fila / parágrafo / corpo / cabeçalho/ rodapé / imagem), ou
  • um documento 4D Write Pro 

O comando devolve a informação de posição em um objeto com as propriedades abaixo:

Nome da propriedadeTipoDescrição
seçãoNúmeroNúmero da primeira seção que intersecta objRango
páginaNúmeroNúmero da primeira página que intersecta objRango
colunaNúmeroÍndice da primeira coluna que intersecta objRango (baseado-1)
linhaNúmeroÍndice da primeira linha que intersecta objRange (relativo à coluna - ou página se não houver nenhuma coluna com base - 1)
posiçãoNúmeroPosição na linha do primeiro caractere de objRange (baseado -1)

Se objRango for uma range vazio, WP Get position devolve a informação de posição ao início da range.
Se objRango fizer referência a um texto no cabeçalho ou no rodapé, WP Get position devolve a informação de posição onde são mostrados o cabeçalho e o rodapé na primeira seção/página.
Se objRango fizer referência a uma imagem ancorada (que pode ser replicada em várias páginas), WP Get position devolve a informação de posição onde a imagem estiver ancorada na primeira seção/página.

O parâmetro opcional layout  pode ser usada para definir a vista HTML wysiwyg para a avaliação objRange. Pode passar uma das constantes abaixo do tema "4D Write Pro":

Constante Tipo Valor Comentário
wk 4D Write Pro layout Inteiro longo 0 Layout 4D Write Pro padrão, que pode incluir atributos de estilo específicos
wk html wysiwyg Inteiro longo 1 Neste formato, os atributos avançados 4D Write Pro que não são compatíveis com todos os navegadores são eliminados

Se omitir layout, o design de 4D Write Pro se usa de forma pré-determinada.

A mesma configuração de visualização que para o comando WP PRINT se usa com WP Get position:

  • cabeçalhos: visíveis
  • rodapés: visíveis
  • expressõs: computadas e mostradas
  • modo página: página ou rascunho (vista wysiwyg HTML segundo o definido pelo comando)  

Se objRango mostrar em uma área de formulário 4D Write Pro, tenha certeza de que a configuração de visualização da área coincida com a configuração de visualização do comando para obter informação consistente. Lembre também que se estas configurações forem diferentes na área, 4D Write Pro terá que "clonar" o documento para calcular o design em cada chamada do comando, o que pode levar muito tempo. Por motivos de rendimento, neste caso, se recomenda construir o documento fora de linha e copiá-lo na área de objetos de formulário só quando se complete a compilação.

Se quiser saber o número de página de uma range:

 C_OBJECT($range;$rangePosition)
 $range:=WP Get selection(WParea) //range da seleção de usuário
 $rangePosition:=WP Get position($range;wk 4D Write Pro layout)
 ALERT("First page number in selection is "+String($rangePosition.page))

Se quiser definir na cor azul o texto na primeira e última página do documento:

 C_LONGINT($nbPages)
 C_OBJECT($body)
 C_COLLECTION($_paragraphs)
 
 $nbPages:=WP Get page count([DOC]Sample)
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 For each($paragraph;$_paragraphs)
    $info:=WP Get position($paragraph)
    If($info.page=1)|($info.page=$nbPages//parágrafos da primeira e última página em azul
       WP SET ATTRIBUTES($paragraph;wk text color;"blue")
    Else //outros parágrafos de página em preto
       WP SET ATTRIBUTES($paragraph;wk text color;"black")
    End if
 End for each

Enquanto cria um documento, se quiser evitar divisões de parágrafo:

 C_OBJECT(WParea;$body)
 C_COLLECTION($_paragraphs)
 WParea:=WP New
 
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 
 For each($paragraph;$_paragraphs)
    $insert:=WP New($paragraph)
 
  //memoriza a range atual e o número de página
    $rangeBefore:=WP Create range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeBefore)
    $memoPage:=$info.page
 
  //insere o conteúdo, conserva a range intacta
    WP INSERT DOCUMENT($rangeBefore;$insert;wk append;wk exclude from range)
 
  //verifica a posição depois da inserção
    $rangeAfter:=WP Create range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeAfter)
 
    If($memoPage#$info.page) // se a página tiver mudado, insere um salto de página
       WP INSERT BREAK($rangeBefore;wk page break;wk replace)
    End if
 
 End for each



Ver também 

WP PRINT

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem 4D Write Pro
Número 1577

This command can be run in preemptive processes

 
HISTÓRIA 

New
Criado por: 4D v17

 
ARTICLE USAGE

Referência 4D Write Pro ( 4D v17)