Escolar Documentos
Profissional Documentos
Cultura Documentos
: Link Target
Link Target
Links aparentemente são métodos de
chamada que poderiam ser completamente
ignorados se não fosse por uma característica
muito interessante: permitir abrir um objeto
em uma nova janela. Muitos poderiam
argumentar que abrir novas janelas no
navegador não é coisa muito inteligente, mas
certos objetos se dão melhor em janelas
novas, como é o caso de planilhas e relatórios
PDF. Portanto, esse post tem por objetivo
explorar um pouco a respeito da programação do Link e também compará‐lo com
os demais recursos que também abrem janelas no Genexus.
Link.Target e Events
Esse é o diferencial, pois é possível definir o target do link, o alvo, que podem ser
os tradicionais: blank, self, parent, , e por ai vai.
Mas para que o mesmo funcione, a primeira coisa a ser considerada é que essa
propriedade deve ter sido previamente programada e disponibilizada na interface do
usuário. Portanto, o LinkTarget já deve ter sido definido quando o usuário
executar o clique sobre o controle cujo link foi programado. Isso pode soar meio
estranho para a maioria, mas existem casos em que se programa (erroneamente,
diga‐se de passagem) o link e o target no evento do usuário, tipo o pressionamento
de um botão, e ai, claro a coisa não funciona corretamente.
1) Links dinâmicos
Nesse caso, observe que o Link Target foi definido em uma imagem (Bitmap)
que foi incluída em um Grid, para se abrir em uma nova janela, e o evento Load é
utilizado para se definir o parâmetro a ser passado para a Procedure1 a ser
aberta.
Event Start
&imagem.LinkTarget = 'blank'
&imagem = ActionUpdate.Link()
EndEvent
http://www.genexando.com/2012/03/linktarget.html 1/3
201767 Genexando...: Link Target
Event Load
for &i=1 to 10
&imagem.Link = Procedure1.Link(&i)
load
endfor
EndEvent
Nesse caso quando se clica na imagem abre‐se uma nova janela com o PDF definido
na Procedure1, mostrando‐se o valor definido de &i.
2) Link Estático
Event Start
image1.LinkTarget = 'blank'
image1.Link = Procedure1.Link(12)
EndEvent
Event Start
image1.LinkTarget = 'blank'
EndEvent
Event Image1.Click
Procedure1.Link(12)
EndEvent
Event Image1.Click
image1.LinkTarget = 'blank'
Procedure1.Link(12)
EndEvent
http://www.genexando.com/2012/03/linktarget.html 2/3
201767 Genexando...: Link Target
Event Image1.Click
image1.LinkTarget = 'blank'
image1.Link = Procedure1.Link(12)
EndEvent
Entenda que essas propriedades seriam efetivas somente quando o usuário pressiona
sobre a Image1, o evento ao link seria programado na próxima chamada, mas
mesmo assim não funcionaria corretamente.
Nesse primeiro o que temos é uma janela estilo Popup modal com a abertura do
relatório PDF definido na Procedure1.
Event Image1.Click
&window.Object = Procedure1.create()
&window.Height = 500
&window.Width = 500
&window.Open()
EndEvent
Event Image1.Click
Procedure1.Popup()
EndEvent
Finalizando
Simples e fácil, somente um pouco de atenção no momento da programação. Mas
cuidado, não substitua todos os seus Call´s e Udp´s por Link´s, pois os primeiros
são chamadas internas de processos e o Link chamadas externas com URL, ou seja,
a menos que você goste de sair passeando pela Web, é sempre melhor chamar os
objetos no mesmo ciclo interno de processamento.
http://www.genexando.com/2012/03/linktarget.html 3/3