Página 1 de 1

como voltar o foco a um combobox\combomboxex

Enviado: 05 Jan 2019 10:41
por Nascimento
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:

Código: Selecionar todos

@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

como voltar o foco a um combobox\combomboxex

Enviado: 08 Jan 2019 08:23
por luiz antonio da silva
Bom dia !

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

Paz e Prosperidade.
Luiz

como voltar o foco a um combobox\combomboxex

Enviado: 08 Jan 2019 13:14
por Nascimento
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=pXl7yNM ... e=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

como voltar o foco a um combobox\combomboxex

Enviado: 09 Jan 2019 09:49
por asimoes
Tentou

Usar assim sem usar o DoMethod ?

Mcreceb_form.cb_codcar_1.Setfocus

como voltar o foco a um combobox\combomboxex

Enviado: 09 Jan 2019 09:58
por asimoes
Poderia testar também com ON CHANGE

ON CHANGE {|| Pgt_Cartao1(this.value) }

como voltar o foco a um combobox\combomboxex

Enviado: 09 Jan 2019 11:21
por asimoes
Nascimento,

Acho que usando uma variável tipo thread vai ajudar

Código: Selecionar todos

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

como voltar o foco a um combobox\combomboxex

Enviado: 09 Jan 2019 21:14
por Nascimento
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

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 13:09
por Nascimento
devido achar que os amigos não conseguiram compreender meu problema fiz um pequeno exemplo do que esta acontecendo

Código: Selecionar todos

#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 :% :% :%

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 13:39
por Nascimento
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

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 16:41
por Toledo
Nascimento, tente fazer assim:

Alteração no Combobox:

Código: Selecionar todos

            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():

Código: Selecionar todos

  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,

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 17:24
por Nascimento
Muito Obg Mestre Toledo ficou Perfeito,
Agradeço tambem aos demais amigos que se empenharam em resolver esse problema :)) :{ X:)

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 22:28
por JoséQuintas
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) Exibido 2654 vezes

como voltar o foco a um combobox\combomboxex

Enviado: 19 Jan 2019 22:50
por Nascimento
amigo quintas na função real vou postar umas telas pra que vc entenda o real proposito ok
nesta tela faz a consulta do caixa certo
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 o modo de Recebimento
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:)

como voltar o foco a um combobox\combomboxex

Enviado: 26 Abr 2019 23:04
por Nascimento
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>