Página 1 de 1

Problema com combobox

Enviado: 27 Mar 2024 10:46
por JoséQuintas
Estou com um problema estranho.
Num teste isolado funciona, o que dá a impressão de ser fonte.
Ao mesmo tempo, HMG3 funciona com o mesmo fonte, o que dá a impressão de fonte correto.
OOHG também não funciona, então confunde.
É a questão de enable/disable

Criação genérica

Código: Selecionar todos

         gui_ComboCreate( iif( ::lWithTab, oTab, ::xDlg ), @aItem[ CFG_FCONTROL ], ;
            nRow2, nCol2, nLen, ::nLineHeight, aItem[ CFG_COMBOLIST ] )
Criação pra minigui (todas)

Código: Selecionar todos

FUNCTION gui_ComboCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, aList )

   IF Empty( xControl )
      xControl := gui_newctlname( "CBO" )
   ENDIF
   DEFINE COMBOBOX ( xControl )
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      VALUE 1
      WIDTH nWidth
      HEIGHT nHeight
      ITEMS aList
   END COMBOBOX

   RETURN Nil
rotina que habilita, genérica

Código: Selecionar todos

            gui_ControlEnable( ::xDlg, aItem[ CFG_FCONTROL ], .T. )
         IF aItem[ CFG_CTLTYPE ] == TYPE_COMBOTEXT
            gui_MsgBox( "Combo normal" )
         ENDIF
rotina da minigui (pra todas)

Código: Selecionar todos

FUNCTION gui_ControlEnable( xDlg, xControl, lEnable )

   SetProperty( xDlg, xControl, "ENABLED", lEnable )

   RETURN Nil
xDlg contém nome, xControl contém nome
aItem[ CFG_FCONTROL ] é o elemento que contém o nome do controle/combobox
Na criação é passado por referência, porque a criação gera o nome

Como eu disse, em HMG3 funciona, mas não funciona em HMG Extended e OOHG (em hwgui também, mas é outra história)
Isso indica que as rotinas genéricas estão corretas, repassando nome correto
Coloquei a mensagem no ponto que habilita pra confirmar se estava passando lá (nem precisava, porque hmg3 funciona)

Num teste isolado com hmg extend funcionou, pra complicar ainda mais pra entender.

A única diferença entre o teste isolado é que aqui está dentro de uma tab.

Alguma idéia ?

Notas:
- apelei pra adicionar uma chamada pra REDRAW, mas sem sucesso.
- está igual aos textbox, pra eles funciona.

Problema com combobox

Enviado: 27 Mar 2024 11:09
por JoséQuintas
Rotina completa habilita/desabilita

Código: Selecionar todos

METHOD EditOn() CLASS frm_Class

   LOCAL aItem, oFirstEdit, lFound := .F.

   FOR EACH aItem IN ::aControlList
      IF aItem[ CFG_CTLTYPE ] == TYPE_HWGUIBUG
            gui_ControlEnable( ::xDlg, aItem[ CFG_FCONTROL ], .T. )
      ELSEIF hb_AScan( { TYPE_EDIT, TYPE_COMBOTEXT }, { | e | e == aItem[ CFG_CTLTYPE ] } ) != 0
         IF aItem[ CFG_ISKEY ]
            gui_ControlEnable( ::xDlg, aItem[ CFG_FCONTROL ], .F. )
         ELSE
            gui_ControlEnable( ::xDlg, aItem[ CFG_FCONTROL ], .T. )
         IF aItem[ CFG_CTLTYPE ] == TYPE_COMBOTEXT
            gui_MsgBox( "Combo normal" )
         ENDIF
            IF ! lFound
               lFound := .T.
               oFirstEdit := aItem[ CFG_FCONTROL ]
            ENDIF
         ENDIF
      ENDIF
   NEXT
   ::ButtonSaveOn()
   gui_SetFocus( ::xDlg, oFirstEdit )

   RETURN Nil
pra combobox e textbox entra na mesma opção.
O teste de CFG_ISKEY é pra ver se é campo chave ou não, por exemplo se é IDCLIENTE, não interfere no combobox, apenas desativa alterar a IDCLIENTE.
Tem o teste se é combobox ;e pra mostrar mensagem apenas no caso de combobox, senão seriam várias.
test.png
Igual pra todas as miniguis, só hmg3 funciona.
Se houvesse erro nas outras partes, daria erro em todas, no restante é o mesmo fonte pra todas.

Problema com combobox

Enviado: 27 Mar 2024 11:20
por JoséQuintas
enabled.png

Código: Selecionar todos

         IF aItem[ CFG_CTLTYPE ] == TYPE_COMBOTEXT
            gui_MsgBox( "Combo normal" )
            gui_MsgBox( "Getproperty:" + iif( GetProperty( ::xDlg, aItem[ CFG_FCONTROL ], "ENABLED" ), "true", "false" ) )
         ENDIF
Ficou mais interessante ainda
Até o teste indica que está habilitada.

Problema com combobox

Enviado: 27 Mar 2024 13:50
por JoséQuintas
Removi tudo, deixei apenas criação, e está desabilitado.

Sem chance....

A possibilidade que vejo é precisar da janela MAIN no aplicativo.

Problema com combobox

Enviado: 27 Mar 2024 15:03
por JoséQuintas
Vou testar ainda:

Código: Selecionar todos

FUNCTION gui_ComboCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, aList )

   IF Empty( xControl )
      xControl := gui_newctlname( "CBO" )
   ENDIF
   DEFINE COMBOBOX ( xControl )
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      VALUE 1
      WIDTH nWidth
      HEIGHT nHeight
      ITEMS aList
   END COMBOBOX
   hb_MemoWrit( "d:\temp\test.txt", ;
      [DEFINE COMBOBOX ( "] + xControl + [" )] + hb_Eol() + ;
      [   PARENT ( "] + xDlg + [" )] + hb_Eol() + ;
      [   ROW ] + Ltrim( Str( nRow ) ) + hb_Eol() + ;
      [   COL ] + Ltrim( Str( nCol ) ) + hb_Eol() + ;
      [   VALUE 1] + hb_Eol() + ;
      [   WIDTH ] + Ltrim( Str( nWidth ) ) + hb_Eol() + ;
      [   HEIGHT ] + Ltrim( Str( nHeight ) ) + hb_Eol() + ;
      [   ITEMS ] + hb_ValToExp( aList ) + hb_Eol() + ;
      [END COMBOBOX] + hb_Eol() )

   RETURN Nil
Gerou este fonte:

Código: Selecionar todos

DEFINE COMBOBOX ( "CBO0000000027" )
   PARENT ( "TAB0000000015" )
   ROW 187
   COL 316
   VALUE 1
   WIDTH 120
   HEIGHT 20
   ITEMS {"ACxxxxxxxxxxxxxx", "RS", "SP", "RJ", "PR", "RN"}
END COMBOBOX

Problema com combobox

Enviado: 27 Mar 2024 15:27
por JoséQuintas

Código: Selecionar todos

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

#include "minigui.ch"

Function Main

   SET WINDOW MAIN OFF
	DEFINE WINDOW Main ;
		AT 0,0 ;
		WIDTH 1024 ;
		HEIGHT 718 ;
		TITLE 'ComboBox Demo'

		@ 20,20 COMBOBOX Combo_1 ;
			WIDTH 100 ;
			ITEMS { '1 | Uno' , '2 | Dos' } ;
			VALUE 1 ;
			ON ENTER SetProperty( "form_1", "CBO0000000027", "enabled", iif( Main.Combo_1.VALUE == 1, .T., .F. ) ) ;
			UPPERCASE ;
			ITEMHEIGHT 21 ;
			FONT 'Courier' SIZE 12

      DEFINE TAB ( "TAB0000000015" ) ;
         PARENT ( "MAIN" ) ;
         AT 50, 0 ;
         WIDTH 800 ;
         HEIGHT 600
      END TAB

      PAGE "A"

         DEFINE COMBOBOX ( "CBO0000000027" )
            PARENT ( "TAB0000000015" )
            ROW 187
            COL 316
            VALUE 1
            WIDTH 120
            HEIGHT 20
            ITEMS {"ACxxxxxxxxxxxxxx", "RS", "SP", "RJ", "PR", "RN"}
         END COMBOBOX

      END PAGE

	END WINDOW

	CENTER WINDOW Main

	ACTIVATE WINDOW Main

RETURN Nil
combobug.png
Quem puder compilar e testar....
De repente é só aqui.

Problema com combobox

Enviado: 27 Mar 2024 15:45
por JoséQuintas
AFFFFFFF

Não pode definir tamanho.
Ao definir o tamanho, não tem espaço pra lista, esse foi o problema.

Na HMG3 funciona normal.

E eu pensando ser por conta de SET WINDOW MAIN OFF, e outras coisas mais....