oribeiro Posted March 15, 2007 Report Share Posted March 15, 2007 Vejam no exemplo abaixo, que quando se fecha a janela com a tecla , apenas no xHarbour, ele processa duas vezes o VALID da Window. Como faço para driblar essa situação? Tentei criar uma variável Static e atualizá-la para tratar a segunda vez que o comando é processado mas não está dando certo. #include "fivewin.ch" Static tela:=.T. function main() local oWnd1, oWnd2, oDlg1, oBtn1, oGet1 Public cVar1:=PadR("APARTE A TECLA E VEJA O RESULTADO",100) DEFINE WINDOW oWnd1 TITLE "WINDOW PRINCIPAL" FROM 0,0 TO 20,60 MDI DEFINE WINDOW oWnd2 TITLE "TECLA " FROM 0,0 TO 20,60 MDICHILD OF oWnd1 oWnd2:bGotFocus = {||oDlg1:SetFocus()} // Sempre coloca o foco no Dialog oWnd2:SetColor(GetSysColor(8),GetSysColor(15)) // faz Cor da oWnd2 = oDlg1 DEFINE DIALOG oDlg1 OF oWnd2 STYLE WS_CHILD FROM 0,0 TO 20,60 @ 2,05 GET oGet1 VAR cVar1 SIZE 150,12 PICT '@!' @ 3,10 BUTTON oBtn1 PROMPT "Fechar" SIZE 100,50 ACTION oDlg1:End() ACTIVATE DIALOG oDlg1 NOWAIT VALID oWnd2:End() ACTIVATE WINDOW oWnd2 VALID ( passou(), .T. ) ACTIVATE WINDOW oWnd1 MAXIMIZED return nil function passou() msginfo(tela,"PASSOU") tela:=.F. return (.t.) (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2007 Author Report Share Posted March 15, 2007 Vejam no exemplo abaixo, que quando se fecha a janela com a tecla , apenas no xHarbour, ele processa duas vezes o VALID da Window. Como faço para driblar essa situação? Tentei criar uma variável Static e atualizá-la para tratar a segunda vez que o comando é processado mas não está dando certo. #include "fivewin.ch" Static tela:=.T. function main() local oWnd1, oWnd2, oDlg1, oBtn1, oGet1 Public cVar1:=PadR("APARTE A TECLA E VEJA O RESULTADO",100) DEFINE WINDOW oWnd1 TITLE "WINDOW PRINCIPAL" FROM 0,0 TO 20,60 MDI DEFINE WINDOW oWnd2 TITLE "TECLA " FROM 0,0 TO 20,60 MDICHILD OF oWnd1 oWnd2:bGotFocus = {||oDlg1:SetFocus()} // Sempre coloca o foco no Dialog oWnd2:SetColor(GetSysColor(8),GetSysColor(15)) // faz Cor da oWnd2 = oDlg1 DEFINE DIALOG oDlg1 OF oWnd2 STYLE WS_CHILD FROM 0,0 TO 20,60 @ 2,05 GET oGet1 VAR cVar1 SIZE 150,12 PICT '@!' @ 3,10 BUTTON oBtn1 PROMPT "Fechar" SIZE 100,50 ACTION oDlg1:End() ACTIVATE DIALOG oDlg1 NOWAIT VALID oWnd2:End() ACTIVATE WINDOW oWnd2 VALID ( passou(), .T. ) ACTIVATE WINDOW oWnd1 MAXIMIZED return nil function passou() msginfo(tela,"PASSOU") tela:=.F. return (.t.) (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2007 Report Share Posted March 15, 2007 #Include "FiveWin.Ch" STATIC Tela := .T. STATIC oWnd1, oWnd2 //-> Janelas Function Main() LOCAL oDlg1, oBtn1, oGet1 MEMVAR cVar1 cVar1 := PadR( "APARTE A TECLA E VEJA O RESULTADO", 100 ) DEFINE WINDOW oWnd1 TITLE "WINDOW PRINCIPAL" FROM 0,0 TO 20,60 MDI DEFINE WINDOW oWnd2 TITLE "TECLA " FROM 0,0 TO 20,60 MDICHILD OF oWnd1 oWnd2:bGotFocus = {||oDlg1:SetFocus()} // Sempre coloca o foco no Dialog oWnd2:SetColor(GetSysColor(8),GetSysColor(15)) // faz Cor da oWnd2 = oDlg1 DEFINE DIALOG oDlg1 OF oWnd2 STYLE WS_CHILD FROM 0,0 TO 20,60 @ 02, 05 GET oGet1 VAR cVar1 SIZE 150, 12 PICT '@!' OF oDlg1 @ 03, 10 BUTTON oBtn1 PROMPT "Fechar" SIZE 100, 50 OF oDlg1 ; ACTION( oDlg1:End() ) CANCEL ACTIVATE DIALOG oDlg1 NOWAIT ; VALID ( oWnd2:End() ) ACTIVATE WINDOW oWnd2 ; VALID ( PASSOU(), .T. ) ACTIVATE WINDOW oWnd1 MAXIMIZED RELEASE ALL Return Nil Function Passou() MsgInfo( OemToAnsi( "PASSOU " ), ; OemToAnsi( "Informa‡Æo" ) ) TELA:=.F. Return( .T. ) id=code>id=code>//-> FIM DO PROGRAMA João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2007 Author Report Share Posted March 15, 2007 João, Compilei o seu exemplo e quando fecho o sistema com a tecla ainda passa duas vezes no VALID da Window. Como faço para driblar isso? Se compilar esse mesmo exemplo com Fivewin 16bits não dá esse erro. (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2007 Report Share Posted March 15, 2007 citação:João, Compilei o seu exemplo e quando fecho o sistema com a tecla ainda passa duas vezes no VALID da Window. Como faço para driblar isso? Se compilar esse mesmo exemplo com Fivewin 16bits não dá esse erro. (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 id=quote>id=quote>Aqui, nem por decreto do PRESIDENTE LULA, passa uma vez só e cai fora. Como Você Compilou com o BUILDX.BAT ??? Experimente trocar a Versão do seu XHARBOUR para 0.99.61 Keres a minha FIVEHX.LIB Para testar?? João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Editado por - kapiaba on 15/03/2007 15:20:01 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2007 Author Report Share Posted March 15, 2007 Sim, pode ser problema na minha versão do Fwh 2.7 ou do xHarbour. Você pode me passar a lib do Fhw para xHb 0.99.61 e também me indicar onde é que eu baixo o .61? Quero testar aqui usando o que você tem aÃ. Obrigado. (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2007 Author Report Share Posted March 15, 2007 João, Acha possÃvel você me enviar esses arquivos por MSN? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2007 Author Report Share Posted March 15, 2007 Testei aqui com todas as releases do Fhw desde a Fhw2.7 de Fevereiro até a Fhw2.8 com os seus respectivos xHarbour´s e em todas elas a tecla ESCAPE faz com que o VALID execute duas vezes. Onde está o problema? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
Kbelo Posted March 15, 2007 Report Share Posted March 15, 2007 #include "fivewin.ch" Static tela:=.T. function main() local oWnd1, oWnd2, oDlg1, oBtn1, oGet1 Public cVar1:=PadR("APARTE A TECLA E VEJA O RESULTADO",100) DEFINE WINDOW oWnd1 TITLE "WINDOW PRINCIPAL" FROM 0,0 TO; 20,60 MDI DEFINE WINDOW oWnd2 TITLE "TECLA " FROM 0,0 TO 20,60 ; MDICHILD OF oWnd1 oWnd2:bGotFocus = {||oDlg1:SetFocus()} // Sempre coloca o foco no Dialog oWnd2:SetColor(GetSysColor(8),GetSysColor(15)) // faz Cor da oWnd2 = oDlg1 DEFINE DIALOG oDlg1 OF oWnd2 STYLE WS_CHILD FROM 0,0 TO 20,60 @ 2,05 GET oGet1 VAR cVar1 SIZE 150,12 PICT '@!' @ 3,10 BUTTON oBtn1 PROMPT "Fechar" SIZE 100,50 ACTION oDlg1:End() ACTIVATE DIALOG oDlg1 NOWAIT VALID FechaOdlg() ACTIVATE WINDOW oWnd2 VALID ( passou(), .T. ) ACTIVATE WINDOW oWnd1 MAXIMIZED return nil ******************** function passou() ******************** msginfo(tela,"PASSOU") tela:=.F. return (.t.) ******************** function FechaoDlg() ******************** oWnd2:bValid:={||.t.} oWnd2:End() id=code>id=code>return .t. Isso deve Resolver Marcelo Michels celo.michels@ibestvip.com.br celo.michels@hotmail.com marcelo@lorenzi.com.br -> Lorenzi Soluções Têxteis <- Criciuma - SC xHarbour build 0.99.2 + WS Editado por - kbelo on 15/03/2007 17:41:33 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 16, 2007 Author Report Share Posted March 16, 2007 Marcelo, Com essa função o sistema cancelou completamente os parâmetros definidos no VALID da Windows. Assim também não dá. (risos) - O que o xHarbour precisa fazer é executar o VALID apenas uma vez (como o seu antecessor Fw). E agora? Será que os desenvolvedores do FwH não tem a correção desse bug? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2007 Report Share Posted March 16, 2007 respondendo seu email, aki voce baixa cualcuer versão do XHARBOUR. Depois é só RECOMPILAR A LIB, usando o HAR2LIB.EXE -> dicas mais dicas. http://fivetechsoft.com/forums/viewtopic.php?t=2486 João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
Kbelo Posted March 16, 2007 Report Share Posted March 16, 2007 bom ai voce pode controlar eu te passei o caminhos das pedras agora é só atravessa hehe tipo faça uma jogada mais ou menos assim. FunçãoValid() If oque eu quero é verdade oWnd2:bValid:={||.t.} return .t. else return .f. endif id=code>id=code>Marcelo Michels celo.michels@ibestvip.com.br celo.michels@hotmail.com marcelo@lorenzi.com.br -> Lorenzi Soluções Têxteis <- Criciuma - SC xHarbour build 0.99.2 + WS Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 19, 2007 Author Report Share Posted March 19, 2007 Resolvido. O João (kapiaba) me passou um novo Fivehx.lib e o ESC passou a funcionar como deveria. Obrigado a todos. Um abraço, Oscar Ribeiro (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 19, 2007 Author Report Share Posted March 19, 2007 João, Estou com o problema resolvido (usando o seu fivehx.lib) mas estou querendo aprender o caminho das pedras. Então, baixei o xHarbour 0.99.70, usei o Harb2Lib.Exe para criar um novo lib (ele criou o FiveH.Lib e eu renomeei para FiveHx.Lib e coloquei na pasta c:\fwh\lib). DaÃ, compilei o meu sistema e o problema do ESC que pasa duas vezes no VALID da Window voltou. Só funciona com a sua Fivehx.lib. Qual é o segredo? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 19, 2007 Report Share Posted March 19, 2007 citação:João, Estou com o problema resolvido (usando o seu fivehx.lib) mas estou querendo aprender o caminho das pedras. Então, baixei o xHarbour 0.99.70, usei o Harb2Lib.Exe para criar um novo lib (ele criou o FiveH.Lib e eu renomeei para FiveHx.Lib e coloquei na pasta c:\fwh\lib). DaÃ, compilei o meu sistema e o problema do ESC que pasa duas vezes no VALID da Window voltou. Só funciona com a sua Fivehx.lib. Qual é o segredo? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 id=quote>id=quote>NAO LEMBRO. PROVAVELMENTE, MODIFIQUEI ALGUMA CLASSE. SE O SEU FIVEWIN PARA 32 BITS FOR ORIGINAL, ENTRE EM CONTACTO COM O REVENDEDOR DO PRODUTO. VIRTUAL OBJECTS INFORMATICA - TELEFONE NA PAGINA PRINCIPAL. ou vendas@fivewin.com.br suporte@fivewin.com.br João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 19, 2007 Author Report Share Posted March 19, 2007 Já mandei uma solicitação para o Gilmer com o teste.prg que mostra o ERRO do ESC. Estou aguardando a resposta. (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 19, 2007 Author Report Share Posted March 19, 2007 Anulei a instrução da classe (Window.prg) e o BUG foi corrigido: if nKey == VK_ESCAPE .and. ::oWnd != nil ::oWnd:KeyChar( nKey, nFlags ) endif Fica aqui registrado para quem tiver esse mesmo problema. Obrigado a todos. (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.