| Exibir tópico anterior :: Exibir próximo tópico |
| Autor |
Mensagem |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 8:48 am Assunto: Utilizando CheckBox em PowerCOBOL |
|
|
Estou postando este tópico com a intenção de dar um passo-a-passo permanente para aqueles que querem aprender como funciona a manipulação de CheckBox no PowerCOBOL.
A medida que eu ou outro colega formos descobrindo outros "segredos", vamos acrescentando aqui. Então vamos começar: _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 8:51 am Assunto: |
|
|
Primeiro devemos declarar as variáveis na WORKING-STORAGE definindo-as como GLOBAL para que seja acessível de qualquer ponto do FORM:
01 WS-Handle pic s9(09) comp-5 global.
01 LVM-SETITEMSTATE PIC S9(04) COMP-5 VALUE 4139 GLOBAL.
01 LVM-GETITEMSTATE PIC S9(04) COMP-5 VALUE 4140 GLOBAL.
01 LVIS-STATEIMAGEMASK PIC S9(09) COMP-5 VALUE 61440 GLOBAL.
01 LSINDEX PIC S9(09) COMP-5 GLOBAL.
01 LSBOOL PIC S9(09) COMP-5 GLOBAL.
01 LVITEM IS GLOBAL.
02 mask PIC S9(09) COMP-5 VALUE 8.
02 iitem PIC S9(09) COMP-5.
02 isubitem PIC S9(09) COMP-5 VALUE 0.
02 state PIC S9(09) COMP-5 VALUE 8192.
02 statemask PIC S9(09) COMP-5 VALUE 61440.
02 psztext POINTER.
02 cchtextmax PIC S9(09) COMP-5.
02 iimage PIC S9(09) COMP-5.
02 1lparam PIC S9(09) COMP-5.
02 iindent PIC S9(09) COMP-5. _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 8:57 am Assunto: |
|
|
Desenhe sua listview. Aqui usaremos o nome LSVClientes. No evento Opened do FORM, faça os ajustes que pretende:
Move "HWND" OF LSVClientes TO WS-Handle
Agora temos o Handle do objeto para fazermos as manipulações: WS-HANDLE
A checkbox será habilitada com o comando:
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 4
BY VALUE 4 *> CHECK BOX
* _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM
Editado pela última vez por Jair em Sex Nov 06, 2009 9:08 am; num total de 1 vez |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 9:02 am Assunto: |
|
|
Para marcar ou desmarcar todos os itens numa só tacada use:
MOVE -1 TO wsgIndex *> Todos
if lstate = 1
move 8192 to state *>MARCAR
else
move 4096 to state *>DESMARCAR>
end-if
CALL "SendMessageA" WITH STDCALL USING
BY VALUE WS-HANDLE
BY VALUE LVM-SETITEMSTATE
BY VALUE wsgIndex
BY REFERENCE lvitem _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 9:05 am Assunto: |
|
|
Para pegar o itens marcados faça um looping:
move "Count" OF LSVClientes to wsl-NumOfRows *>Total de itens carregados
Perform varying wsl-INDEX from 1 by 1 until wsl-INDEX > wsl-NumOfRows
subtract 1 FROM wsl-INDEX giving wsgIndex
CALL "SendMessageA" WITH STDCALL USING
BY VALUE WS-HANDLE
BY VALUE LVM-GETITEMSTATE
BY VALUE wsgIndex
BY VALUE LVIS-STATEIMAGEMASK
RETURNING LSBOOL
* O itens marcados LSBOOL retorna com o valor 8192 e os desmarcados o valor 4096
end-perform
. _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Sex Nov 06, 2009 9:07 am Assunto: |
|
|
Agora temos outros GatGets que podem enfeitar um pouco a LSV:
CALL "SendMessageA" WITH STDCALL
USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 128
BY VALUE 128 *> Estilo HiperLink
CALL "SendMessageA" WITH STDCALL
USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 32
BY VALUE 32 *> Seleção linha inteira (destaque)
CALL "SendMessageA" WITH STDCALL
USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 8
BY VALUE 8 *> Seleção automática no modo hiperlink
CALL "SendMessageA" WITH STDCALL
USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 1
BY VALUE 1 *> GRID
* _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
|