getbox com imagem/action

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Código: Selecionar todos

FUNCTION gui_TextCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, ;
            xValue, cPicture, nMaxLength, bValid, bAction, cImage  )

   IF Empty( xControl )
      xControl := gui_newctlname( "TXT" )
   ENDIF
   DEFINE GETBOX ( xControl )
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      HEIGHT nHeight
      WIDTH nWidth
      FONTNAME DEFAULT_FONTNAME
      IF ValType( xValue ) == "N"
         NUMERIC .T.
         INPUTMASK cPicture
      ELSEIF ValType( xValue ) == "D"
         DATE .T.
         DATEFORMAT cPicture
      ELSEIF ValType( xValue ) == "L" // workaround to do not get error
         xValue := " "
      ELSEIF ValType( xValue ) == "C"
         MAXLENGTH nMaxLength
      ENDIF
      VALUE xValue
      IF ! Empty( bAction )
         ACTION bAction
      ENDIF
      IF ! Empty( cImage )
         IMAGE cImage
      ENDIF
      //ON LOSTFOCUS Eval( bValid )
      VALID bValid
   END GETBOX
   (bValid)

   RETURN Nil
Não está acatando action e image.
Falta alguma coisa ?
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Faltava sim, olhar pro lugar certo kkkkkkkkkkkkkkkkkkkkkkkkkk

Código: Selecionar todos

            iif( aItem[ CFG_ISKEY ] .OR. ! Empty( aItem[ CFG_VTABLE ] ), { || Nil }, Nil ), ;
            iif( aItem[ CFG_ISKEY ] .OR. ! Empty( aItem[ CFG_VTABLE ] ), "bmpinfo", Nil ) )
Tava olhando pro campo ISKEY mas só tinha colocado no outro.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Ainda tem um probleminha.

Do action já resolvi, Eval( bAction )

Mas falhou no campo chave.
telaerro.png
Mesma rotina em todos.
O primeiro, campo chave, falhou.
Talvez algum evento atrapalhando.

Problema de últmo elemento igual HWGUI não é.

TODOS são criados assim:

Código: Selecionar todos

FUNCTION gui_TextCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, ;
            xValue, cPicture, nMaxLength, bValid, bAction, cImage  )

   IF Empty( xControl )
      xControl := gui_newctlname( "TXT" )
   ENDIF
   DEFINE GETBOX ( xControl )
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      HEIGHT nHeight
      WIDTH nWidth
      FONTNAME DEFAULT_FONTNAME
      IF ValType( xValue ) == "N"
         NUMERIC .T.
         INPUTMASK cPicture
      ELSEIF ValType( xValue ) == "D"
         DATE .T.
         DATEFORMAT cPicture
      ELSEIF ValType( xValue ) == "L" // workaround to do not get error
         xValue := " "
      ELSEIF ValType( xValue ) == "C"
         MAXLENGTH nMaxLength
      ENDIF
      VALUE xValue
      IF ! Empty( bAction )
         ACTION Eval( bAction )
      ENDIF
      IF ! Empty( cImage )
         IMAGE cImage
      ENDIF
      //ON LOSTFOCUS Eval( bValid )
      VALID bValid
   END GETBOX
   (bValid)

   RETURN Nil
São chamadas com estes parâmetros, iguais nos dois casos

Código: Selecionar todos

         iif( aItem[ CFG_ISKEY ] .OR. ! Empty( aItem[ CFG_VTABLE ] ), { || gui_Msgbox( "pesquisa" ) }, Nil ), ;
            iif( aItem[ CFG_ISKEY ] .OR. ! Empty( aItem[ CFG_VTABLE ] ), "bmpinfo", Nil ) )
A diferença é que o campo chave é independente.
Primeiro só está ativo o campo chave.
Só depois de passar pelo campo chave, pelo VALID, o campo chave é desativado, e os demais são ativados.
TODOS eles tem VALID.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

O VALID é executado antes do CLICK, afinal, o foco saiu do getbox.

No caso do primeiro campo, o VALID desativa e o click não acontece.

No caso dos outros campos, o código inválido aciona o browse, e o click não acontece.

Com código válido, nos outros campos o click tem efeito.
Com código válido, o primeiro campo de qualquer jeito é desativado.

Passei lá pro Grigory pra ver se tem alternativa.

O problema é o VALID ser executado antes do click.

Não dá pra ser a mesma solução do button CANCEL.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

get1.png
Acima 1 e click, ok, mostrou a ação.
Mas primeiro foi o VALID, pesquisou o código, atualizou o nome do vendedor na tela, e mostrou na tela a mensagem do click.
get2.png
Acima 50 e click, código não cadastrado.
A validação abriu o browse automático, tudo bem que o uso final do click será pra isso, mas no momento a ação é outra.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Só pra curiosidade:

Código: Selecionar todos

FUNCTION frm_Validate( aItem, Self )

   LOCAL nSelect, lFound := .T., xValue, nPos

   nPos := hb_AScan( ::aControlList, { | e | e[ CFG_CTLTYPE ] == TYPE_BUTTON .AND. ;
      e[ CFG_CAPTION ] == "Cancel" } )
   IF nPos != 0
      IF gui_IsCurrentFocus( ::xDlg, ::aControlList[ nPos, CFG_FCONTROL ] )
         RETURN .T.
      ENDIF
   ENDIF
...
Desse jeito no VALID eu testo se o foco está indo para o button cancel.
Mas não tenho referência do button do getbox pra fazer a mesma coisa.
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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

getbox com imagem/action

Mensagem por alxsts »

Olá!

Existe este controle na HwGUI?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Na prática, um controle pode ter vários dentro, é mais comum do que se pensa.
Na minigui existe pronto.

Na HWGUI não sei se alguma versão tem.

Outro exemplo, na HWGUI atual a progressbar tem uma dialog própria, acaba fazendo parte da progressbar.

Isso de várias funções é mais comum do que parece.
O combobox pode ser um EDIT com LISTBOX.
A TAB são várias pages

Como eu comento sempre: tudo é janela
vb6-1.png
vb6-2.png
A opção de criar controles no VB6.
Pode colocar vários dentro da janela.

Por exemplo, esse textbox com o button do lado.
E a parte de programação, pra alinhar automático um controle do lado do outro, conforme o tamanho.
No uso depois, é só colocar esse novo controle no formulário, entra como um controle único.

Tanto hwgui quanto minigui contém dicas na documentação sobre criar controles.

Poderia ser um textbox com título (textbox+label)

Pois é... agora imagine a infinidade de possibilidades com isso.

Até mesmo o "owner draw", ele é desenhado a mão, com o visual que quiser.
é uma janela, e desenho a mão, via rotinas no controle, do jeito tradicional do console, mas tela gráfica.
O BROWSE é o mais manual de todos, apenas não se vê durante o uso.

Nota: visualmente desse jeito, acho que fica mais claro sobre criar/mixar/etc.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Parece que não, mas é muito interessante isso do VB6.
Mostra que um controle é praticamente uma DIALOG, que pode ter controles dentro.

Para a questão do post, seria tratar o conjunto, e o tratamento está individual.
Seria tratar um VALID ou LOSTFOCUS do conjunto, e não do textbox.
Ao tratar isolado, o CLICK causou o lostfocus do controle interno, e não do controle-conjunto.
Mas como resolver, aí complica.
Talvez nesse ponto facilitaria com objetos/classes, que daria a visão no fonte meio parecida com a visão dessa tela.

Não sei se saberia resolver, mas isso seria meio parecido com minha classe de ADO.
A classe é o objeto, e dentro dela tem os objetos conexão e recordset.
O fonte usa o objeto/classe ADO, sem acesso direto ao que tem dentro.

Esse controle com textbox e button deveria ser igual: um novo controle com textbox e button dentro, e esse novo controle ser o intermediário dos controles internos. Dessa forma o click poderia evitar VALID e LOSTFOCUS do textbox que seriam internos.

E qualquer um poderia criar novos controles, afinal, todos sabem trabalhar com DIALOG.
Isso é o que essa imagem me fez perceber, coisa que por fonte não fica tão claro.


Mas enquanto isso... ainda sem solução para o problema do post.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Acabei achando a "quase" solução: BTNTEXTBOX.

Só não está respeitando o ícone definido.

Uia, na FREE SYNTAX, conhecida por ALTERNATE SYNTAX

Código: Selecionar todos

FUNCTION gui_TextCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, ;
            xValue, cPicture, nMaxLength, bValid, bAction, cImage  )

   IF Empty( xControl )
      xControl := gui_newctlname( "TXT" )
   ENDIF
   IF ! Empty( cImage )
      DEFINE BTNTEXTBOX ( xControl )
   ELSE
      DEFINE GETBOX ( xControl )
   ENDIF
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      HEIGHT nHeight
      WIDTH nWidth
      FONTNAME DEFAULT_FONTNAME
      IF ValType( xValue ) == "N"
         NUMERIC .T.
         INPUTMASK cPicture
      ELSEIF ValType( xValue ) == "D"
         DATE .T.
         DATEFORMAT cPicture
      ELSEIF ValType( xValue ) == "L" // workaround to do not get error
         xValue := " "
      ELSEIF ValType( xValue ) == "C"
         MAXLENGTH nMaxLength
      ENDIF
      VALUE xValue
      IF ! Empty( bAction )
         ACTION Eval( bAction )
      ENDIF
      IF ! Empty( cImage )
         IMAGE cImage
      ENDIF
      //ON LOSTFOCUS Eval( bValid )
      VALID bValid
   IF ! Empty( cImage )
      END BTNTEXTBOX
   ELSE
      END GETBOX
   ENDIF
   (bValid)

   RETURN Nil

Só meu formatador de fonte é que vai se perder com isso kkkk
text.png
BTNTEXTBOX tem o funcionamento desejado, mas a imagem não é a definida, aparece "..."
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

getbox com imagem/action

Mensagem por JoséQuintas »

Alarme falso.

talvez caiba a pergunta: pra que usar isso?
Ficou ainda pior.

Vamos ver se aparece solução pra qualquer dos dois casos.
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/
Responder