Usando o menu ACHOICE() com o mouse

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JorgeLuizGouveia
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 26 Mar 2020 13:43
Localização: Teresina/PI

Usando o menu ACHOICE() com o mouse

Mensagem por JorgeLuizGouveia »

Olá!
Quero o código fonte do menu ACHOICE() com o mouse, para editar?
Poderiam me ajudar?
JorgeLuizGouveia
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 26 Mar 2020 13:43
Localização: Teresina/PI

Usando o menu ACHOICE() com o mouse

Mensagem por JorgeLuizGouveia »

Olá?
Alguém para resolver esse problema?
Anilto
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 05 Abr 2017 20:14
Localização: Ribeirão Pires/SP

Usando o menu ACHOICE() com o mouse

Mensagem por Anilto »

Para usar o Achoice() com mouse, só precisa setar o contexto correto, que, no aso do windows é HB_GT_WVT.
Se usar HB_GT_WIN, o mouse não funciona.

Exemplo:

Código: Selecionar todos

/* 	AChoice com mouse 

	Compilar com HBMK2 MOUSE02 HBCT.HBC
	
	O Programa original:
		#include "inkey.ch" // Key definitions
		REQUEST HB_GT_WVT_DEFAULT

		FUNCTION MAIN
			LOCAL aOpc := {"Opc. 1","Opc. 2","Opc. 3"}, nOpc
			SET( _SET_EVENTMASK, INKEY_ALL )
			cls
			nOpc := ACHOICE(1,1,10,20,aOpc)
			? nOpc
		RETURN NIL

*/


#include "inkey.ch" 

/* Definições para facilidades do console do windows, codepages e localização */
#include "hbgtinfo.ch"		
REQUEST HB_LANG_PT			
REQUEST HB_CODEPAGE_PTISO	
REQUEST HB_GT_WVT_DEFAULT 	/* HB_GT_WIN é o console puramente texto (o mouse não funciona bem nesse contexto */
							/* Então usamos HT_GT_WVT, que usa o console co API do Windows (Não sei se funciona em outros SO */

FUNCTION MAIN
	LOCAL aOpc := {"Ação entre amigos","Paranapauã","Credópolis", "Saída"}, nOpc := 0
	Local cSai
	SET( _SET_EVENTMASK, INKEY_ALL ) /* Habilita todas teclas e também eventos do mouse */
	/* Para chamar as facilidades requisitadas por hbgtinfo e HB_GT_WVT */
	HB_LANGSELECT('PT')
	HB_CDPSELECT('PTISO')   
   	HB_GtInfo( HB_GTI_MAXIMIZED, .F. )
	HB_GtInfo( HB_GTI_FONTNAME, "Courier Prime" )
	HB_GtInfo( HB_GTI_WINTITLE, "Teste de Achoice() com mouse" )
	/* Configurações do console "a la Clipper" */
	MSETCURSOR(.T.)
	set cursor off
	set score off
	setmode(40,120)
	Cls
	/* Chama uma função que usa hbgtinfo para alterar a paleta de cores */
	PALETA()
	
	// Altera as cores padrão:

	While nOpc != 4
		SET COLOR TO (""w/bg,W+/rb,gr+/bg,gr+/rb,w/N,w/B"")
		
		nOpc := ACHOICE(1,3,10,20,aOpc)   /*Todo achoice funciona aqui */
		
		cSai := "Opção: " + nTOc(nOpc)
		@ 7, 3 	SAY cSai COLOR "W+/N"
		@ 8, 3 	SAY cSai COLOR "GR+/B"
		@ 9, 3 	SAY cSai COLOR "RB+/G"
		@ 10,3 	SAY cSai COLOR "R+/BG"
		@ 11,3 	SAY cSai COLOR "BG+/R"
		@ 12,3 	SAY cSai COLOR "G+/RB"
		@ 13,3 	SAY cSai COLOR "B+/GR"
		@ 14,3 	SAY cSai COLOR "N+/W"		
	EndDo
	InKey(8)

RETURN NIL

/* A função que altera a paleta de cores
	Cada componente de cor pode receber um valor hexadecimal de dois dígitos (256 combinações)
	B - de 00 a FF
	G - de 00 a FF
	R - de 00 a FF
	Note que a combinação de digitos é BGR e não RGB
	0xBBGGRR
*/
Function paleta()
	local aPal := { 	0x000000, ; //0 N
						0xd27619, ; //1 B
						0x004d00, ; //2 G
						0xc1ac00, ; //3 BG
						0x1c1cb7, ; //4 R
						0xdaa89f, ; //5 RB
						0xc8ccd7, ; //6 GR
						0x222222, ; //7 W
						0x888888, ; //8 N+ 
						0xfab481, ; //9 B+
						0x84c781, ; //10 G+
						0xf2ebb2, ; //11 BG+
						0x7373e5, ; //12 R+
						0xdb9db3, ; //13 RB+
						0x58eeff, ; //14  GR+
						0xffffff }  //15 W+
	aPal1 := HB_GtInfo( HB_GTI_PALETTE, aPal)
Return NIL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando o menu ACHOICE() com o mouse

Mensagem por JoséQuintas »

Basta compilar indicando que é GUI.
-gui
ou o hbc: gui=yes

WVT é a lib gráfica default do Harbour, pra Windows ou Linux.
WVG é a lib WVT com adição de recursos exclusivamente Windows.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Usando o menu ACHOICE() com o mouse

Mensagem por Vlademiro »

Acho que ele quer usando somente recursos do Clipper ou uma lib para Clipper.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usando o menu ACHOICE() com o mouse

Mensagem por JoséQuintas »

É mesmo... o post tá no CA-Clipper.

Se for Clipper mesmo, talvez o 5.3 tenha recurso de mouse.
No 5.2 só usando superlib, mas TEM QUE MODIFICAR.
Se não tomar cuidado, pode sobrecarregar o uso de CPU só por causa do mouse.
Mas mesmo no 5.3... isso de sobrecarregar também pode acontecer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Anilto
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 05 Abr 2017 20:14
Localização: Ribeirão Pires/SP

Usando o menu ACHOICE() com o mouse

Mensagem por Anilto »

No Clipper 5.3, o Achoice usa recursos do GETSYS, cujo código fonte está no SOURCE do Clipper. Já está preparado para o mouse, mas para isso precisa acrescentar a biblioteca llibg. (Não lembro bem como usei isso em 1999)
Só que funciona no DOS, mas não no windows. No windows é necessário acrescentar algum recurso do HB_GT_???. O que pesa no Harbour é a falta de documentação e os "forks" que nem sempre seguem um padrão.
José Anilto
cap.anilto@gmail.com
Responder