Clipper On Line • Ver Tópico - Combobox, deixar ele aberto com as opções?

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

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

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

Mensagempor pena » 15 Jan 2021 13:34

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
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

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

Mensagempor alxsts » 17 Jan 2021 13:27

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.
/*
* 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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

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

Mensagempor JoséQuintas » 17 Jan 2021 19:22

Está aí uma coisa interessante pra pensar.

 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-34/blob/master/contrib/gtwvg/combobox.prg#L255-L263
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

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

Mensagempor marcosgambeta » 18 Jan 2021 06:47

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

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
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

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

Mensagempor HASA » 18 Jan 2021 13:12

Fala Gambeta, passei só pra deixar aquele abraço,
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

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

Mensagempor pena » 19 Jan 2021 13:56

Desculpe pela demora no feedback, mas funcionou perfeitamente, obg a todos
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

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

Mensagempor Nascimento » 25 Jan 2021 21:03

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
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro