sexta-feira, 10 de agosto de 2007

Power´s e Net´s: prazer, eu sou o Listview !


Olá. Me chamo Listview. Sou um dos componentes padrões do Windows, apesar de muitos desenvolvedores por aí acharem que pertenço a uma linguagem em especial.

Algumas pessoas me acham um componente difícil de lidar. Talvez pelo fato de não saberem como me mandar mensagens ou por não conhecerem as famosas API´s, acabam me achando antipático. Desculpem, meus amigos, mas essas são as únicas formas de comunicação comigo.

Quando uma ferramenta cria um Listview em uma janela ou "form" do Windows, na verdade está executando internamente uma API chamada "CreateWindowEx", passando uma série de parâmetros como posição, tamanho, estilo, entre outras tantas informações.

Na maior parte do tempo, recebo mensagens enviadas pela API "SendMessage", que faz com que a minha aparência seja alterada ao gosto do desenvolvedor. Para facilitar a vida do desenvolvedor, as linguagens visuais não mostram toda essa infinidade de códigos.

Quando o desenvolvedor quer adicionar um ítem, por exemplo, tem que enviar a mensagem LVM-INSERTITEM através da API "SendMessage", junto com alguns outros parâmetros. Para alterar a minha cor de fundo é utilizada a mensagem LVM-SETBKCOLOR. Se quiser conhecer as mensagens que são enviadas a mim, acesse o site da Microsoft. Viu só como as linguagens visuais facilitam esse trabalho ?

Existe um processo (looping) onde eu envio as mensagens contando tudo o que está acontecendo comigo. Algumas linguagens transformam essas mensagens em eventos, facilitando a vida do desenvolvedor. A Programação Orientada ao Objeto permite que qualquer um desses eventos sejam interceptados. Mas nem todas as linguagens oferecem esse recurso.

O Microfocus Net Express nesse ponto sai na frente. Apesar do seu ambiente de desenvolvimento (IDE) dificultar bastante o desenvolvedor que quer me utilizar - diferentemente do PowerCobol - o Net Express permite que a minha classe seja totalmente manipulada. Qualquer evento que acontece comigo pode ser alterado utilizando o Net Express. O mesmo não acontece no PowerCobol. Não é possível, por exemplo, subclassear um Listview no PowerCobol. Eu queria tanto estar errado nesse sentido. Se eu estiver, Power´s, corrijam-me a vontade.

Já em relação ao IDE, o PowerCobol permite que muitas coisas sejam alteradas em minha aparência. Ponto para o PowerCobol, porque nesse quesito, o Net Express fica lá atrás. Até quando a Microfocus vai acreditar que os Net´s gostam do Dialog e seus programas controladores ?

Muita gente gostaria de me ver assim, bem colorido. Uma linha de cada cor, uma fonte diferente em cada linha. Tem gente que adoraria digitar dados diretamente em minhas linhas e colunas. Pra essa gente toda, gostaria de dizer que tudo isso é possível. Mas não quer dizer que seja uma tarefa fácil. Para isso, é necessário primeiro detectar todas as mensagens que eu envio para o seu programa. Sei que no Net Express, essas mensagens são detectadas no método "wmGadgetNotify", dentro da classe Listview. Dá pra saber o momento exato em que estou "desenhando" os meus ítens e é justamente nesse momento que as cores das linhas ou as fontes podem ser alteradas, individualmente. Na internet existe um exemplo de como fazer isso com o Net Express. Infelizmente isso não é possível fazer com o PowerCobol. A Fujitsu bem que poderia colaborar um pouquinho mais, né ?

Digitar dados diretamente em minhas linhas e colunas também não é uma tarefa das mais fáceis, mas é igualmente possível de se fazer. Mais uma vez, o desenvolvedor necessita ter conhecimento sobre as API´s que detectam a posição do clique do mouse, os atributos de um ítem do Listview, como altura, largura, sem contar que o próprio ítem do Listview precisaria se tornar um objeto, para que todas essas alterações sejam refletidas diretamente nele. Ufa, até eu já estou me achando um "cara" meio complicado !

Bem, esse sou eu, o Listview. Uma outra hora conto mais pouquinho sobre meus segredos. Espero que os Net´s e os Power´s possam fazer bom proveito de mim, quando me utilizarem em suas aplicações. Foi um prazer conversar com vocês. Até mais...

2 comentários:

Antonio João disse...

Bem que a Microfocus podia doar os fontes do Dialog System, não acha?

Alexandre Cortez. disse...

Eu nem queria os fontes do Dialog System, meu caro amigo AntonioJoão... se a Microfocus fizesse pelo Dialog System metade do que a Borland fez pelo IDE do Delphi, eu já estava sorrindo à toa... infelizmente eu tenho que concordar com muitos amigos desenvolvedores: o Dialog System é mesmo um Diabolic System... não precisava ser dessa maneira... programas controladores ? só mesmo com a Microfocus... e tenho dito !