FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour BtnBmp entre los Gets, problema de Focu ???
Posts: 248
Joined: Wed Jan 11, 2006 11:30 AM
BtnBmp entre los Gets, problema de Focu ???
Posted: Fri May 30, 2008 04:09 PM
Siempre que y uso el BtnBmp entre los Gets, tengo problemas com el retorno del SetFocus ;
REDEFINE GET oGet[1]  VAR oDbfCadaClie:ArCodAll ID 21 OF oDlg PICTURE "999999" Update


REDEFINE BTNBMP oBtn[1] ID 701 RESOURCE "PESQ_CLI_24" OF oDlg NOBORDER Default   ;              
ACTION ( IF( Empty(oDbfCadaClie:ArCodAll), oGet[2]:SetFocus(), ;                         			    ( AchaClie( StrZero( Val( oDbfCadaClie:ArCodAll ),6 ) ) );
                    ), ;		        
                   Eval( cBCpf ), Eval( cBRg ), oDlg:UpDate() ) UpDate


REDEFINE GET oGet[2]  VAR oDbfCadaClie:ArNomCli ID 22 OF oDlg PICTURE "@!"   UpDate


********************************************************************************
STATIC FUNCTION AchaClie( cCodClie )
********************************************************************************
  oDbfCadaClie:GoTop()                     
  IF !oDbfCadaClie:Seek(cCodClie)
     ( IIF( MsgYesNo("Código não Encontrado" + CRLF + "Deseja Fazer uma Busca por Cliente", "Selecione uma Opção"), ;
	       ( BrwPesqClie(),oGet[5]:SetFocus() ),; // Eval( cBCpf ), Eval( cBRg ), oGet[3]:SetFocus() ), ;
	  		 ( oDbfCadaClie:Blank(), oGet[2]:SetFocus()  ))) //, oGet[2]:SetFocus() ) ) , oDlg:UpDate() )
  ELSE     
	 oGet[5]:SetFocus() //--> *
    oBtn[1]:oJump := oGet[5]  //--> **
    //xSetFocus(oGet[5])
  ENDIF
  nVlrUnit := oDbfCadaClie:ArVlrCli
  nVlrTt:=nQtd * nVlrUnit
  oGet[23]:Refresh()

RETURN .T.


* No retorna ao Focu estabelecido, o focu vai direto para oGet[2]
** tengo q colocar el jump, para funcionar correctamente, si y usar solamente o Jump, tambien no funciona, preciso siempre usar los 2 juntos.

Isto solo acontece usando el tecla Enter, si y clickar com el Mouse, ai funciona perfectamente solamente com o SetFocus ou solamente com el Jump.

Outra forma que tambien funciona normal es usando el Function xsetFocus()

FUNCTION XSetFocus(oObj)
Local oTempo := ""
Define Timer oTempo Interval 10 Of oObj:oWnd Action (oObj:SetFocus(),oObj:SetPos(0),oTempo:Deactivate())
Activate Timer oTempo
Retu("")


Estas funcionam mui bem:
1-
oGet[5]:SetFocus()
oBtn[1]:oJump := oGet[5]

2-
oBtn[1]:oJump := oGet[5]
xSetFocus(oGet[5])

3-
oGet[5]:SetFocus()
xSetFocus(oGet[5])

Mi duda es, uno SetFocus no serio lo bastante para funcionar ?

Sendo que, com el Mouse, lo retorno eh normal con uno Setfocus() apenas.

E con <Enter> es preciso de usar lo SetFocus, combinado com el Jump ou la Funçao xSetFocus().

Saludos Ale
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
BtnBmp entre los Gets, problema de Focu ???
Posted: Thu Jun 05, 2008 08:14 AM

Ale,

> Mi duda es, uno SetFocus no serio lo bastante para funcionar ?

No, no es suficiente porque el proceso de perdida de foco es una secuencia que ha de completarse con una ganancia de foco.

Es decir, si estas en una secuencia de cambio de foco controlada por Windows, no puedes interrumpirla. Por eso la opción del timer funciona, porque Windows ha terminado ya y entonces SI puedes cambiar el foco.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 248
Joined: Wed Jan 11, 2006 11:30 AM
BtnBmp entre los Gets, problema de Focu ???
Posted: Thu Jun 05, 2008 02:14 PM

Ahora Comprendo, Gracias.

Saluds, Ale

aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**

Continue the discussion