domingo, 28 de novembro de 2010

Gxui apresentando Internal Error: Invalid Render

Gxui é um recurso fantástico para implementar interfaces, mas devido a falta de documentação, de vez em quando, temos algumas dificuldades.

A última diz respeito a mensagem Internal Error: Invalid Render, aparecendo na construção do Web Panel.  Gerando um grave inconveniente de não se permitir que se visualize a interface gráfica. Ou seja, impossibilitando a programação.

Para corrigir o problema, instale novamente o gxui, realizando o download e e em seguida o restart do Genexus. Ao abrir novamente de um Build All nos objetos, que a mensagem desaparece.

Quanto ao aparecimento do erro, foi após instalar um Pattern que mudou o posicionamento dos UC´s do gxui da paleta de ferramentas, ou seja, creio ser um problema de versão.

quinta-feira, 11 de novembro de 2010

Show in Default Form...

Voce conhece a propriedade Show in Default Form?

Por não conhecer, toda vez que tinha atributos de controle na interface, como por exemplo, flags que indicavam o registro apagado, datas de controle, totais de itens, e coisas do tipo.  Programava no evento Start uma propriedade PedidoItensTotal.visible = 0.  E não apenas isso como tambem tinha que apagar o rótulo do atributo na interface, ou seja, a interface original saia do padrão justamente por atributos de controle.

Recentemenete, resolvi procurar um recurso de remover atributos indesejados na interface do usuário, e não é que existe a tal propriedade  Show in Default Form. Seu funcionamento é remover os atributos marcados como false da interface gerada.

Muito útil.

quarta-feira, 3 de novembro de 2010

Obtendo a Resolução de Vídeo do Usuário

Simples, uma aplicação Web precisa ser apresentada no navegador do usuário, que é um programa complexo, cheio de recursos, mas diferente de um fabricante a outro, e para complicar ainda mais é importante que a informação que você quer apresentar se adapte a resolução do monitor de seu cliente.

Genexus facilita a vida porque praticamente resolve tudo sozinho na questão de incompatibilidade de navegadores, ficando poucas situações que de fato dependem de programação especial.

Este exemplo explora Javascript para descobrir a resolução de vídeo na máquina do usuário, e sua utilidade, não preciso nem mesmo explicar, não é!

Javascript

É uma linguagem que opera no navegador, de sintaxe simples e cheia de recursos que podem ser explorados para se produzir interfaces especiais.  Genexus não atrapalha nesse sentido, permitindo que se agregue funcionalidades em Javascript sem mistérios.

Esse exemplo explora o conceito de DOM do Javascript para devolver parâmetros para o Genexus, sendo que esses constituem a resolução de vídeo do usuário.  Não estou dizendo a dimensão da janela (maximizada, minimizada ou ajustada pelo usuário), mas a própria resolução de vídeo.  Se deseja as dimensões da janela também é simples, mas não vou explorar isso aqui.

Funcionamento

Ao executar uma operação de login no sistema, gravamos em sessão as dimensões da janela (width e height).  Todas as interfaces seguintes podem explorar esse recurso para dimensionar sua área.

Utilizamos o conceito de agregar no da página um evento onload que chama a função responsável por obter e armazenar as dimensões em duas variáveis Gx criadas no formulário.

Ao finalizar o processo, lë-se as variáveis e cria-se a sessão. Simples!.

Para isso criamos inicialmente um webpanel, com quatro variáveis: &usuário, &senha, &screenwidth e &screenheight, sendo as duas últimas mantidas ocultas do usuário
Sem segredos na criação das variáveis, a resolução pode ser Numeric(4) as demais não são importantes no exemplo.

Em seguida utilizamos um TextBlock para definir os comandos Javascript que tratam de obter a resolução da interface (linha 9 e 12, abaixo), e a programação do evento onload na tag da página (linha 5 a 13: função, linha 15: a inclusão no body).


Finalmente, ao se pressionar Entrar, a criação da sessão (linhas 20 e 21) , e o tratamento do login do usuário, (a partir da linha 24).


 O resultado
Ao se executar o programa, e ao se pressionar ENTER.


Ocorre a criação da sessão, e a mensagem de boas vindas apresentando a resolução obtida.


Você pode utilizar esse recurso para programar Javascript com Genexus, ou mesmo estendê-lo para obter uma estatística da resolução de seus usuários, com certeza te auxiliará na geração de interfaces adequadas ao seu público.

Agora, o pior é a resolução do meu vídeo 1366x768, fala sério, já viu isso? nem mesmo eu sabia .