Página 1 de 1

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

Enviado: 15 Jan 2021 13:34
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

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

Enviado: 17 Jan 2021 13:27
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

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

Enviado: 17 Jan 2021 19:22
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

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

Enviado: 18 Jan 2021 06:47
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

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

Enviado: 18 Jan 2021 13:12
por HASA
Fala Gambeta, passei só pra deixar aquele abraço,
HASA

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

Enviado: 19 Jan 2021 13:56
por pena
Desculpe pela demora no feedback, mas funcionou perfeitamente, obg a todos

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

Enviado: 25 Jan 2021 21:03
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 )