Clube Cobol - Índice Clube Cobol
O fórum da linguagem de programação mais famosa do mundo!
 
 FAQFAQ   BuscaBusca   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Mensagens privadasMensagens privadas   EntrarEntrar 

Utilizando CheckBox em PowerCOBOL

 
Novo tópico   Responder tópico    Clube Cobol - Índice -> NetCobol->PowerCobol
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

MensagemEnviada: Sex Nov 06, 2009 8:48 am    Assunto: Utilizando CheckBox em PowerCOBOL Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Sex Nov 06, 2009 8:51 am    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Sex Nov 06, 2009 8:57 am    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Sex Nov 06, 2009 9:02 am    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Sex Nov 06, 2009 9:05 am    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Sex Nov 06, 2009 9:07 am    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
Mostrar os tópicos anteriores:   
Novo tópico   Responder tópico    Clube Cobol - Índice -> NetCobol->PowerCobol Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Você não pode enviar mensagens novas neste fórum
Você não pode responder mensagens neste fórum
você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode votar em enquetes neste fórum


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por phpBB Brasil