Conheça os comandos Print form e FORM LOAD actualizados

4D v16 R5 trouxe uma melhoria significativa ao comando DIALOG. Uma melhoria que reside na possibilidade de passar um novo parâmetro “formData ” de tipo objeto. Foi ótimo saber que esta nova adição foi bem recebida pelos programadores 4D.

Com 4D v20, dois outros comandos foram atualizados, Print form e FORM LOAD! O benefício será igualmente grande. O conteúdo do objeto passado no parâmetro será diretamente explorável nos formulários impressos ou nos formulários carregados na memória.

código AMOSTRA

Imprima o formulário

O comando Print form é amplamente utilizado pelos programadores 4D graças às suas melhorias recentes.

O comando PRINT FORM pode agora passar um parâmetro opcional do tipo objeto acessível através da função Form no formulário invocado. Seja diretamente utilizando a função Form como através de expressões para os objetos do formulário (Form.firstname / Form.lastname / etc.), mas também quando o evento on printing detail for executado.

$formData:=New object()
$formData.lastname:="Smith"
$formData.firstname:="john"
$formData.request:="I need more COFFEE"
$h:=Print form("Print_obj"; $formData; Form detail)

Onde o formulário “Print_obj” tem este aspecto:

 

FORMULÁRIO CARREGADO

Seguindo o mesmo princípio, o comando FORM LOAD pode agora receber um objeto como parâmetro. Se for passado (opcional), então o conteúdo deste objeto pode ser explorado de diferentes maneiras e modificado durante a execução do evento on load (apenas evento gerido e apenas dentro de uma sequência OPEN PRINTING JOB / CLOSE PRINTING JOB).

OPEN PRINTING JOB

$formData.LBcollection:=New collection()
$formData.LBcollection.push(New object("reference"; "alpha"; "quantity"; 3; "total"; 120.99))
$formData.LBcollection.push(New object("reference"; "bravo"; "quantity"; 2; "total"; 599.99))

FORM LOAD("GlobalForm"; $formData)  // $formData NEW !!!

$over:=False
Repeat 
	$full:=Print object(*; "LB")  // o datasource de listbox "LB" é Form.LBcollection	
	LISTBOX GET PRINT INFORMATION(*; "LB"; lk printing is over; $over)
	If (Not($over))
		PAGE BREAK
	End if 
Until ($over)
CLOSE PRINTING JOB

…onde o “GlobalForm” contém uma caixa de listagem “LB” utilizando Form.LBcollection como fonte de dados.

blank

Conclusão

Esta nova possibilidade de programação irá poupar-lhe tempo e tornar o seu código “mais leve”.

Como habitualmente, sinta-se à vontade para partilhar o seu feedback sobre os fóruns 4D. Aguardo com expectativa a sua resposta!

 

Roland Lannuzel
- Proprietário do produto & Especialista 4D - Depois de estudar electrónica, a Roland entrou nas TI industriais como desenvolvedor e consultor, construindo soluções para clientes com uma variedade de bases de dados e tecnologias. No final dos anos 80, apaixonou-se pela 4D e utilizou-a para escrever aplicações comerciais que incluem sistemas de contabilidade, facturação e correio electrónico. Juntando-se à empresa em 1997, as valiosas contribuições de Roland incluem a concepção de especificações, ferramentas de teste, demonstrações, bem como formação e palestras para a comunidade 4D em muitas conferências. Ele continua a moldar activamente o futuro da 4D, definindo novas características e ferramentas de desenvolvimento de bases de dados.