Combobox, deixar ele aberto com as opções?

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

Combobox, deixar ele aberto com as opções?

Mensagem por pena »

Boa tarde, alguém sabe como faz para num combobox, ao receber o foco, ele abrir as opções, tem um propriedade, showdropbox = true, mas não surtiu efeito
alxsts
Colaborador
Colaborador
Mensagens: 3107
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Combobox, deixar ele aberto com as opções?

Mensagem por alxsts »

Olá!

Alterei o exemplo que está no caminho C:\MiniGUI\SAMPLES\BASIC\COMBO_1\demo.prg e ficou como abaixo. Faça testes. Creio que vá resolver o teu problema.

Código: Selecionar todos

/*
 * MINIGUI - Harbour Win32 GUI library Demo
 *
 */

#include "minigui.ch"

#define COMBO_BASE       320
#define CB_SHOWDROPDOWN  ( COMBO_BASE + 15 )

Function Main

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 200 ;
		TITLE 'ComboBox Demo' ;
		MAIN 

		@ 20,20 COMBOBOX Combo_1 ;
			WIDTH 100 ;
			ITEMS { '1 | Uno' , '2 | Dos' , '3 | tres' } ;
			VALUE 1 ;
			ON ENTER MsgInfo( Form_1.Combo_1.ITEMHEIGHT ) ;
			UPPERCASE ;
			ITEMHEIGHT 21 ;
			FONT 'Courier' SIZE 12  ;
			TOOLTIP 'Pressione TAB para próximo campo'

		DEFINE COMBOBOX Combo_2
			ROW	20
			COL	140
			WIDTH	100
			ITEMS	{ '1 | Uno' , '2 | Dos' , '3 | tres' }
			VALUE	1
			ON GOTFOCUS SendMessage( GetControlHandle('Combo_2','Form_1'), CB_SHOWDROPDOWN, 1, 0 )
			ON ENTER MsgInfo ( Form_1.Combo_2.ITEMHEIGHT )
			LOWERCASE .T.
			ITEMHEIGHT 17
		END COMBOBOX

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return Nil
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Combobox, deixar ele aberto com as opções?

Mensagem por JoséQuintas »

Está aí uma coisa interessante pra pensar.

Código: Selecionar todos

 ON GOTFOCUS SendMessage( GetControlHandle('Combo_2','Form_1'), CB_SHOWDROPDOWN, 1, 0 )
Na mesma linha que cria o controle está definindo um método.
Com certeza na prática (internamente) vai ser diferente, porque se o controle ainda não existir, como poderia definir uma ação pra ele?
Além disso, como poderia pegar o handle dele, se ele não existisse?
Esse GetControlHandle("combo_2","form_1") acaba não vinculado a nada, e por isso fica mais tranquilo usá-lo, o controle nem precisa existir, para esta função.

Não tinha pensado nisso antes, mas é interessante, acaba permitindo referência a coisas que não existem, o que na montagem de uma tela às vezes pode ajudar.

curiosidade, a gtwvg já faz isso:
https://github.com/JoseQuintas/harbour- ... #L255-L263
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Combobox, deixar ele aberto com as opções?

Mensagem por marcosgambeta »

A tecla F4 pode ser usada para abrir e fechar o ComboBox. Então, pode-se fazer assim também:

Código: Selecionar todos

ON GOTFOCUS InsertVKey( VK_F4 )
Mas ao testar, notei um [d]efeito colateral em ambos os casos (SendMessage e InsertVKey): quando o combobox ganha o foco através do mouse, ele abre e fecha em seguida.

Teste assim:

. execute o exemplo
. clique no segundo combobox
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Combobox, deixar ele aberto com as opções?

Mensagem por HASA »

Fala Gambeta, passei só pra deixar aquele abraço,
HASA
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

Combobox, deixar ele aberto com as opções?

Mensagem por pena »

Desculpe pela demora no feedback, mas funcionou perfeitamente, obg a todos
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 765
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Combobox, deixar ele aberto com as opções?

Mensagem por Nascimento »

pena escreveu:Boa tarde, alguém sabe como faz para num combobox, ao receber o foco, ele abrir as opções, tem um propriedade, showdropbox = true, mas não surtiu efeito
tem esse comando bem simples

on gotfocus comboshowdropdown( this.handle )
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder