Muito francamente, nós adoramos objectos. 4D Write Pro utiliza objectos como entrada/saída de comandos e funções para manipular documentos, textos, parágrafos, etc. Neste post do blogue, vamos mostrar-lhe quatro formas diferentes de utilizar objectos com o 4D Write Pro.
Definição de atributos
Vamos usar um exemplo simples. Quer definir a fonte, tamanho e peso do texto seleccionado para “Arial”, “Bold” e “16pt”.
Primeiro, capture o texto seleccionado como um intervalo.
$range:=WP Get selection(WParea)
Lembrete: WP Get selection não devolve o texto, devolve o intervalo que corresponde ao texto seleccionado. Este intervalo tem vários atributos que são visíveis no depurador: “início”, “fim”, “tipo”, e “proprietário”.
Depois, defina os atributos com a WP SET ATTRIBUTES comando:
WP SET ATTRIBUTES($range;wk font family; "Arial")
WP SET ATTRIBUTES ($range;wk font size;16)
WP SET ATTRIBUTES (
$range;wk font bold;wk true)
Este código é fácil de ler e escrever graças às constantes e, em alguns casos, às constantes inteligentes (como wk true na terceira linha).
Alternativa 1: OB SET
Desde que $range seja um objecto e wk font xxx seja um atributo, pode considerar a utilização do comando OB SET ordenar que se faça o mesmo.
E sabe que mais? Funciona muito bem! O código abaixo faz exactamente a mesma coisa:
OB SET($range;wk font family; "Arial")
OB SET ($range;wk font size;16)
OB SET (
$range;wk font bold;wk true)
Mesmo as mesmas constantes podem ser usadas. A única diferença é que já não é óbvio que este código se aplique a um documento 4D Write Pro. Hmmmmm. Vejamos a segunda alternativa.
Alternativa 2: Notação de objecto
Se tiver activado a notação de objectos nas suas bases de dados, gostaria de a utilizar o mais possível, certo?
Será que este código também funcionará?
$range.fontFamily:="Arial"
$range .fontSize:=16
$range .fontBold:=wk true
Sim, funciona! E vem com um par de vantagens adicionais: código compactado, fácil de ler, e o resultado é – claro – exactamente o mesmo.
Uma pequena nota de prudência: Escrito desta forma, não há auto-completamento, e as constantes/smart constants requerem cuidados adicionais porque são sensíveis a maiúsculas e minúsculas(por exemplo, fontFamily funcionará, mas FontFamily não). Portanto, se escrever este tipo de código, sugerimos que tenha muito cuidado 😉
Existe outra escolha? Sim, existe!
Alternativa 3: Notação de objectos com parênteses
A notação de objectos é realmente poderosa. O nome dos atributos pode ser avaliado se estiverem dentro de parênteses rectos [“myAttribute”]. Por isso, quando se escreve:
contact["name"]:="Brown"
é o equivalente exacto da escrita:
contact.name:="Brown" (castanho)
O que significa para 4D Write Pro? A resposta curta é: pode usar notação de objecto E constantes!
$range[wk font family]:="Arial"
$range [wk font size]:=16
$range [
wk font bold]:=wk true
Esta alternativa final é compacta, fácil de ler/escrever, e usa constantes…um vencedor!!
E os atributos de Leitura ?
O mesmo se aplica aos atributos de leitura. Os seguintes exemplos de código são válidos.
WP GET ATTRIBUTES($range;wk font family;$family)
WP GET ATTRIBUTES ($range;wk font size;$size)
WP GET ATTRIBUTES (
$range;wk font bold;$bold)
Alternativa 1: OB GET
$family:=OB Get($range;wk font family)
$size :=OB Get($range;wk font size)
$bold :=OB Get($range;wk font bold)
Alternativa 2: Notação de objectos
$family:=$range.fontFamily
$size :=$range.fontSize
$bold:=$range.fontBold
Alternativa 3: Notação de objectos com parênteses
$family:=$range[wk font family]
$size :=$range[wk font size]
$bold :=$range[wk font bold]
Como se pode ver, múltiplas formas de programação podem conduzir ao mesmo resultado. Cabe agora a si decidir qual a direcção a tomar!