quarta-feira, 30 de dezembro de 2009

Manipulando Imagens

Essa é bem simples, mas ajuda, a questão do tratamento de imagens em Genexus X, que a partir desta versão passou a tratar também do gerenciamento das imagens do projeto.

Genexus guarda as imagens do projeto em Customization->Images, sendo que todas devem ser importadas pela ferramenta com a opção New Image. Duplo clique sobre uma imagem nesta pasta permitirá abri-la para edição, e um novo duplo clique sobre a imagem aberta permitirá trocá-la por outra.

As imagens são armazenadas por default na pasta web/Resources do projeto, e caso a KB tenha definida vários idiomas e na carga da imagem seja especificado este tratamento, então uma imagem para cada idioma do projeto será colocada nas pastas web/Resources/.

Para incluir a imagem em uma interface utilize o controle Image na paleta, até aqui muito simples.

Acesso Runtime

Aqui a coisa fica mais interessante, ou seja, como manipular ou acessar a imagem na referida pasta.

Usando um controle TextBlock é possível apresentar a imagem, desde que este seja definido como Format=HTML. Daí é só programar a tag HTML , no formato a seguir.



(clique na imagem para aumentar)

Observe que o nome da imagem (nomeimagem) e a chamada a Link() retornam o endereço relativo (a partir da pasta raiz do sistema ‘web’), permitindo que a mesma seja acessada pelo browser. Em outras palavras, a chamada devolve algo como Resources/nomeimagem.gif

Botão com Imagem


Usando este simples recuso é possível programar um botão diferente com texto e imagem.



Este pode ser construído a partir de uma variável (Varchar(300), Readonly=true e Format=HTML) ou mesmo em um TextBlock.






Em ambos os casos é possível interceptar o pressionamento com um simples

Event &BotaoPrint.Click
...
EndEvent

Bitmap

Outra maneira de manipular uma imagem é através de variável Bitmap, sendo que neste caso, é necessário carregar a imagem a partir da função loadbitmap(). O mesmo resultado obtido por Link() pode ser utilizado para carregar a imagem na variável bitmap.




Antes de Fechar a Conta
A imagem que se encontra na pasta Resources ou nas pastas de idiomas, podem ser manipuladas (desde que não se troque o nome das mesmas) normalmente. Ou seja, para a realização de uma eventual manutenção, não é necessário recarregá-la no Genexus, bastando a gravação da modificação no arquivo de imagem nas referidas pastas.
Conclusão
Pequenas coisas que auxiliam na construção de interfaces interessantes e muitas outras podem ser criadas com esses recursos simples, deixemos isto para outra ocasião.