como voltar o foco a um combobox\combomboxex

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

como voltar o foco a um combobox\combomboxex

Mensagem por luiz antonio da silva »

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
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

como voltar o foco a um combobox\combomboxex

Mensagem por asimoes »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

como voltar o foco a um combobox\combomboxex

Mensagem por asimoes »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

como voltar o foco a um combobox\combomboxex

Mensagem 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
►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 do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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 :% :% :%
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

como voltar o foco a um combobox\combomboxex

Mensagem 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,
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 do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem por Nascimento »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

como voltar o foco a um combobox\combomboxex

Mensagem 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 2647 vezes
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
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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:)
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

como voltar o foco a um combobox\combomboxex

Mensagem 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>
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder