quarta-feira, 3 de outubro de 2007

Perfumes para o Listview

Acrescente algumas funcionalidades ao seu Listview, enviando mensagens para alterar o comportamento do mouse, rastrear a seleção de ítens, mudar as barras de rolagem e mostrar o conteúdo automático das colunas.

Defina o tipo de chamada das API´s:

special-names.
call-convention 66 is wapi.

Na working-storage section, defina as variáveis utilizadas:

77 ListviewHandle pic 9(09) comp-5 value zeros.
78 LVM-SETEXTENDEDLISTVIEWSTYLE value 4150.
78 LVS-EX-TRACKSELECT value h"00000008".
78 LVS-EX-ONECLICKACTIVATE value h"00000040".
78 LVS-EX-TWOCLICKACTIVATE value h"00000080".
78 LVS-EX-FLATSB value h"00000100".
78 LVS-EX-INFOTIP value h"00000400".

Vamos considerar que o Listview será representado pela variável umListview, definida como masterfield dentro da GS.

Para rastrear o ponteiro do mouse e selecionar o ítem automaticamente:

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-TRACKSELECT
by value LVS-EX-TRACKSELECT

Para mudar o ponteiro do mouse e deixar os ítens semelhantes a links:

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-ONECLICKACTIVATE
by value LVS-EX-ONECLICKACTIVATE

Para selecionar um ítem em dois cliques:

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-TWOCLICKACTIVATE
by value LVS-EX-TWOCLICKACTIVATE

Para mostrar um "tooltip" sempre que a coluna for menor do que o seu conteúdo:

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-INFOTIP
by value LVS-EX-INFOTIP


Para mostrar barras de rolagem no estilo "flat":

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-FLATSB
by value LVS-EX-FLATSB

Todas os estilos acima podem ser "desligados" passando o valor "zero" no último parâmetro da API. Veja, por exemplo, como "desligar" as barras de rolagem no estilo "flat", voltando ao normal:

invoke umListview "GetSystemHandle" returning ListviewHandle
call WAPI "SendMessageA" using by value ListviewHandle
by value LVM-SETEXTENDEDLISTVIEWSTYLE
by value LVS-EX-FLATSB
by value 0

Essa regra se aplica a todas os outros estilos descritos acima.

Você está no Orkut ? Clique aqui e participe da comunidade que criei no Orkut para o NetAlexpress !

Nenhum comentário: