Clipper On Line • Ver Tópico - como voltar o foco a um combobox\combomboxex

como voltar o foco a um combobox\combomboxex

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 05 Jan 2019 09:41

Amigos desde ontem :% venho quebrando cabeça ao tentar voltar o foco ao combobox ou comboboxex "testei com os 2"
o problema é o seguinte :
tenho um textbox de valor se o valor for maior que zero habilita o combobox e seta o foco para escolher as opçoes
as Opçoes são as seguintes:

@70,430 comboboxex  cb_codcar_1;                
               width 150 ;
               items {"Selecione a Bandeira","HIPER","MASTER","VISA","ELO","AMERICAN"};
               value 1 ;
               tooltip "Escolha a Bandeira e Tecle Enter";
               font 'tahoma' size 10 ;
               on enter (Pgt_Cartao1(this.value));

Static Function Pgt_Cartao1(Arg1)

  if ( Arg1 == 1)
      msginfo("Escolha a Bandeira do cartão!!")
      DoMethod("Mcreceb_form","cb_codcar_1","Setfocus")     
      Return (.f.)
  elseif( Arg1 > 1)
   *  SetProperty("Mcreceb_form","cb_codcar_1","Enabled",.f.)
     * vai ao proximo textbox
     else
       *** comandos***
     endif
  endif
Return Nil


o que acontece é o seguinte não obedece o Setfocus simplismente pula para o proximo textbox
tentei usando o SetProperty(), e mcreceb_form.cb_codcar_1.Setfocus , e tambem sem exito! :'(
agradeço desde ja os amigos que poderem me ajudar!
Att: Nascimento
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

como voltar o foco a um combobox\combomboxex

Mensagempor luiz antonio da silva » 08 Jan 2019 07:23

Bom dia !

Acredito que é só trocar esse return para true ou remover a linha.

Paz e Prosperidade.
Luiz
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 08 Jan 2019 12:14

ja fiz isso amigo, ficou no mesmo fiz um pequeno video pra um amigo entender o que esta acontecendo, ate consegui contornar mais não da maneira que queria
vou ver se consigo upar esse video e boto o link aqui
este é o erro que estou passando
https://www.youtube.com/watch?v=pXl7yNMB1qE&feature=youtu.be

como eu falei contornei mas não pondo o foco diretamente no combobox e sim no textbox ao lado, o que pra mim não ficou satisfatorio rsrs :-o
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

como voltar o foco a um combobox\combomboxex

Mensagempor asimoes » 09 Jan 2019 08:49

Tentou

Usar assim sem usar o DoMethod ?

Mcreceb_form.cb_codcar_1.Setfocus
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor asimoes » 09 Jan 2019 08:58

Poderia testar também com ON CHANGE

ON CHANGE {|| Pgt_Cartao1(this.value) }
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor asimoes » 09 Jan 2019 10:21

Nascimento,

Acho que usando uma variável tipo thread vai ajudar

Static Function Pgt_Cartao1(Arg1)
THREAD STATIC nLastArg1

  If nLastArg1 = Nil .OR. nLastArg1 != Arg1
     If ( Arg1 == 1 )
         msginfo("Escolha a Bandeira do cartão!!")
         //DoMethod("Mcreceb_form","cb_codcar_1","Setfocus")
         Mcreceb_form.cb_codcar_1.Setfocus   
     elseif( Arg1 > 1)
        *  SetProperty("Mcreceb_form","cb_codcar_1","Enabled",.f.)
        * vai ao proximo textbox
     else
       *** comandos***
     endif
     nLastArg1 := Arg1
  endif
 
Return Nil
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 09 Jan 2019 20:14

assimoes disse: Acho que usando uma variável tipo thread vai ajudar


não tenho muito conhecimento com esse tipo de variavel mais vou testar
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

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 19 Jan 2019 12:09

devido achar que os amigos não conseguiram compreender meu problema fiz um pequeno exemplo do que esta acontecendo

#INCLUDE "hmg.ch"

FUNCTION Main()
private aCard:={"Selecione a Bandeira","HIPER","MASTER","VISA","ELO","CREDCARD","CIELO"}
private Pagou:=0
private valor_apagar := 20 
   
   DEFINE WINDOW Form_1            ;
      AT 90,90                     ;
      WIDTH 700                    ;
      HEIGHT 350                   ;
      TITLE "erro combobox" ;
      on init (iniciar());
      MAIN
      define tab tab_Form_1 ;
         at 34,10 ;
            width form_1.width -40 height 250 ;
              font 'ms sans serif' size 10 bold   
         define page "Combo"
         @70,20 label   lb_vlrcart_1 value "Cartão 1" bold autosize transparent
         define textbox tx_fpg_ct1
               row 70
               col 90
               width 80
               height 24
               datatype numeric
               inputmask "999,999.99"
               value 0
               tooltip "Recebimento no Primeiro Cartão"
               fontbold .t.
               tabstop .t.
               readonly .f.
               on enter (Pgt_Cartao1(this.value))
               backcolor {{255,255,255},{200,255,255},{255,255,200}}
            end textbox
            *
            define comboboxex cb_codcar_1
              row 70
              col  190            
              width 150
              items aCard
              value 1
              tooltip "Escolha a Bandeira e Tecle Enter"
              fontname 'tahoma'
              fontsize 10
              on enter (Check_Bandeira1(this.value))
              * para ja abrir o combo quando esta em foco
*              on gotfocus comboshowdropdown( this.handle )
            end comboboxex
            ***
            @ 100,20 label   lb_fpg_cup value "Cupons" autosize bold  transparent
            define textbox tx_fpg_cup
               row 100
               col 90
               width 80
               height 24
               datatype numeric
               inputmask "999,999.99"
               value 0
               tooltip "Recebimento em Cupons"
               fontbold .t.
               tabstop .t.
               readonly .f.
               backcolor {{255,255,255},{200,255,255},{255,255,200}}
*               on enter (Pgt_Cupons(this.value))
            end textbox
            ****
            @ 130,20 label lb_pd_qto value "Histórico"  font 'Tahoma' size 09 bold autosize  transparent
            define textbox tx_hi_qto               
               row 150
               col 20
               width 260
               height 22
               datatype character
          *      inputmask "!!!!!!!!!!!!!!!!!!!"
               backcolor {{255,255,255},{200,255,255},{255,255,200}}
               maxlength 26
               uppercase .t.
               value ""
               tooltip "Historico:"
               fontbold .t.         
               tabstop .t.
          *      readonly .t.
               visible .t.
*              on lostfocus (Volta_Foco())
               onenter (Recebe_conta())
            end textbox    
         end page
      end tab
      on key ESCAPE of Form_1  action Form_1.release
   END WINDOW
   Form_1.Activate
   RETURN NIL
   
*-------------------------------------------------------------------------------
   
Function Pgt_cartao1(Arg1)
  pagou := Arg1
if (pagou) # 0
   SetProperty("form_1","cb_codcar_1","Enabled",.t.)
   DoMethod("form_1","cb_codcar_1","Setfocus")
   Return (.t.)
else
    msginfo("Valor tem que ser diferente de zero")
    DoMethod("form_1","tx_fpg_ct1","Setfocus")
endif
Return Nil

********************************************************************************

Function Iniciar()
   SetProperty("form_1","cb_codcar_1","Enabled",.f.)
   SetProperty("form_1","tx_hi_qto","Enabled",.f.)
   SetProperty("form_1","tx_fpg_cup","Enabled",.f.)
Return Nil

********************************************************************************

Static Function Check_Bandeira1(Arg1)
  if ( Arg1 == 1)     
     msginfo("Erro Na Bandeira")
     DoMethod("form_1","cb_codcar_1","Setfocus")   
      Return (.f.)
  elseif( Arg1 > 1 .and. pagou < valor_apagar)  // se pagou é menor que 20 reais
     // caso o pagamento seja inferior manda o foco para o cupom
     msginfo("manda o foco pra o cupon")
     SetProperty("form_1","tx_fpg_cup","Enabled",.t.)
     SetProperty("form_1","tx_fpg_cup","Setfocus")
  else
    // caso seja maior manda pra o historico
      msginfo("manda o foco pra o historico")
     SetProperty("form_1","tx_hi_qto","Enabled",.t.)
     SetProperty("form_1","tx_hi_qto","Setfocus")
  endif 
Return  .t.
      

   
*-------------------------------------------------------------------------------

procedure Recebe_Conta()
  msginfo("Recebeu")
Return Nil     
   
     


se eu inserir o valor de 10 reais ele tem que setar o foco pra o textbox cupon, "não faz" :%
e se eu inserir o valor de 20 reais ou superior o foco seria pra ir para o historico :(
e não estou conseguindo :% :% :%
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

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 19 Jan 2019 12:39

Amigo assimoes, não daria pra usar assim porque estou atualizando de outro .prg
Mcreceb_form.cb_codcar_1.Setfocus

On change tambem não daria porque não daria a opção de escolha assim que colocar em uma bandeira ja é aceita, que não é o caso
teria que ser seguramente o on enter

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

como voltar o foco a um combobox\combomboxex

Mensagempor Toledo » 19 Jan 2019 15:41

Nascimento, tente fazer assim:

Alteração no Combobox:
            define combobox cb_codcar_1
              row 70
              col  190           
              width 150
              items aCard
              value 1
              tooltip "Escolha a Bandeira e Tecle Enter"
              fontname 'tahoma'
              fontsize 10
              onenter {|| IF(Check_Bandeira1(this.value), IF(pagou<valor_apagar,form_1.tx_fpg_cup.Setfocus,form_1.tx_hi_qto.Setfocus),)}
*              * para ja abrir o combo quando esta em foco
*              on gotfocus comboshowdropdown( this.handle )
            end combobox


Alteração na função Check_Bandeira1():
  elseif( Arg1 > 1 .and. pagou < valor_apagar)  // se pagou é menor que 20 reais
     // caso o pagamento seja inferior manda o foco para o cupom
     msginfo("manda o foco pra o cupon")
     SetProperty("form_1","tx_fpg_cup","Enabled",.t.)
*     SetProperty("form_1","tx_fpg_cup","Setfocus")
  else
    // caso seja maior manda pra o historico
      msginfo("manda o foco pra o historico")
     SetProperty("form_1","tx_hi_qto","Enabled",.t.)
*     SetProperty("form_1","tx_hi_qto","Setfocus")
  endif


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 19 Jan 2019 16:24

Muito Obg Mestre Toledo ficou Perfeito,
Agradeço tambem aos demais amigos que se empenharam em resolver esse problema :)) :{ X:)
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

como voltar o foco a um combobox\combomboxex

Mensagempor JoséQuintas » 19 Jan 2019 21:28

Esquisito isso tudo.
Não deveria ser algo deste tipo?
Pode mexer no valor e na forma de pagamento a vontade até confirmar.

pagamento.png
pagamento.png (8.95 KiB) Visualizado 1892 vezes
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 19 Jan 2019 21:50

amigo quintas na função real vou postar umas telas pra que vc entenda o real proposito ok

Consulta_Caixa.png
nesta tela faz a consulta do caixa certo


digamos que o operador errou o modo de recebimento em vez de receber em dinheiro ele recebeu em cartão
no fechamento do caixa, e mensal vai dar mais em dinheiro do que em cartão, então há essa possibilidade de
ajustar, ele vai ate a grid, escolhe a suite que deu o recebimento errado e da 2 clicks
então abre essa janela aqui
troca pagamento.png
Troca o modo de Recebimento


o erro que estava dando é que não ia pra o textbox historico nem a cacet passei 2 dias quase virando a noite
e sem exito até o momento :{ X:)
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

como voltar o foco a um combobox\combomboxex

Mensagempor Nascimento » 26 Abr 2019 23:04

aviso aos navegantes!!!, foi corrigido na versão 19.04 da minigui extended
passei trabalho com o datapicker tambem, achando que era erro meu, tive que fazer uma função orientada a gambiarra pra poder funcionar
ainda bem que foi corrigido , assim retiro a gambiarra!!

* Fixed: The problem with using of 'SetFocus' method into ON ENTER event and
established Navigation Extended in the CHECKBOX, COMBOBOX, DATEPICKER
and TIMEPICKER controls.
Reported by user at the official HMG forum.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
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 10 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