SET PRINT MARKER
SET PRINT MARKER ( markNum ; posiçao {; *} )
Parâmetro | Tipo | Descrição | |
---|---|---|---|
markNum | Integer | → | Número do marcador |
posiçao | Integer | → | Nova posição do marcador |
* | Operador | → | Se passado = mover marcadores seguintes; se omitido = não move os marcadores seguintes |
Esse comando não é seguro para thread e não pode ser usado em código adequado.
Descrição
O comando SET PRINT MARKER permite definir a posição de um marcador durante a impressão. Combinado com os comandos Get print marker, OBJECT MOVE ou Print form, este comando lhe permite ajustar o tamanho das áreas de impressão.
SET PRINT MARKER pode ser utilizado em dois contextos:
- durante o evento de formulário On header, no contexto de os comandos PRINT SELECTION e PRINT RECORD.
- durante o evento de formulário On Printing Detail, no contexto do comando Print form.. Esta operação facilita a impressão de informes personalizados (ver exemplo).
- O efeito do comando está limitado à impressão; nenhuma modificação aparece na tela. As modificações realizadas os formulários não são guardados.
Passe no parâmetro markNum una das constantes do tema :
Constante | Tipo | Valor |
---|---|---|
Form break0 | Inteiro longo | 300 |
Form break1 | Inteiro longo | 301 |
Form break2 | Inteiro longo | 302 |
Form break3 | Inteiro longo | 303 |
Form break4 | Inteiro longo | 304 |
Form break5 | Inteiro longo | 305 |
Form break6 | Inteiro longo | 306 |
Form break7 | Inteiro longo | 307 |
Form break8 | Inteiro longo | 308 |
Form break9 | Inteiro longo | 309 |
Form detail | Inteiro longo | 0 |
Form footer | Inteiro longo | 100 |
Form header | Inteiro longo | 200 |
Form header1 | Inteiro longo | 201 |
Form header10 | Inteiro longo | 210 |
Form header2 | Inteiro longo | 202 |
Form header3 | Inteiro longo | 203 |
Form header4 | Inteiro longo | 204 |
Form header5 | Inteiro longo | 205 |
Form header6 | Inteiro longo | 206 |
Form header7 | Inteiro longo | 207 |
Form header8 | Inteiro longo | 208 |
Form header9 | Inteiro longo | 209 |
Em posição, passe a nova posição desejada, expressada em píxels.
Se passa o parâmetro opcional *, todos os marcadores localizados em baixo do marcador especificado por markNum se moverão o mesmo número de píxels e na mesma direção que este marcador quando se executa o comando. Advertência: neste caso, os objetos presentes nas áreas situadas abaixo do marcador também se movem.
Quando o parâmetro * se utiliza, é possível posicionar o marcador markNum alem da posição inicial dos marcadores que o seguem, estes últimos marcadores serão movidos simultaneamente.
Notas:
• Este comando modifica só a posição de os marcadores existentes. Não permite a adição de marcadores. Se atribuir um marcador que não existe no formulário, o comando não fará nada.
• O funcionamento dos marcadores de impressão em modo Desenho se conserva: um marcador não pode ir mais acima do que o antecede, nem mais abaixo do que o que segue (quando o parâmetro * não se utiliza).
Exemplo
Este exemplo completo permite gerar a impressão de um relatório de três colunas, a altura de cada linha se calcula de acordo com os conteúdos dos campos.
O formulário de saída utilizado para a impressão é o seguinte:
O evento de formulário On Printing Detail foi selecionado para o formulário (recorde que sem importar em que área se imprima, o comando Print form só gera este tipo de evento de formulário).
Para cada registro, a altura da linha deve estar adaptada de acordo aos conteúdos da coluna "Atores" ou "Resumo" (coluna tem a maioria do conteúdo). Este é o resultado desejado:
O método de projeto de impressão é o seguinte:
var vLaltura_imp;$vLaltura;vLaltura_impresso : Integer
C_STRING(31;vSprint_area)
PAGE SETUP([Filmes];"List_Imp3")
GET PRINTABLE AREA(vLaltura_imp)
vLaltura_impreso:=0
ALL RECORDS([Filmes])
vSprint_area:="Cabeçalho" //Impressão da área de cabeçalho
$vLaltura:=Print form([Filmes];"List_Imp3";Form header)
$vLaltura:=21   //Altura fixa
vLaltura_impreso:=vLaltura_impresso+$vLaltura
While(Not(End selection([Filmes])))
vSprint_area:="Detalhe" //Impressão da área de detalhe
$vLaltura:=Print form([Filmes];"List_Imp3";Form detail)
//El cálculo del detalle se lleva a cabo en el método de formulario
vLaltura_impreso:=vLaltura_impreso+$vLaltura
If(OK=0) //CANCEL ha sido ejecutado en el método de formulario
PAGE BREAK
vLaltura_impreso:=0
vSprint_area:="Encabezado" //Reimpresión del área de encabezado
$vLaltura:=Print form([Peliculas];"List_Imp3";Form header)
$vLaltura:=21
vLaltura_impreso:=vLaltura_impreso+$vLaltura
vSprint_area:="Detalle"
$vLaltura:=Print form([Peliculas];"List_Imp3";Form detail)
vLaltura_impreso:=vLaltura_impreso+$vLaltura
End if
NEXT RECORD([Peliculas])
End while