oribeiro Posted March 14, 2007 Report Share Posted March 14, 2007 Percebi que o FW trata o ESC de um modo diferente do FWH. Tem como cancelar a tecla ESC para que o usuário não feche a janela usando essa tecla? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 14, 2007 Author Report Share Posted March 14, 2007 Percebi que o FW trata o ESC de um modo diferente do FWH. Tem como cancelar a tecla ESC para que o usuário não feche a janela usando essa tecla? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2007 Report Share Posted March 14, 2007 citação:Percebi que o FW trata o ESC de um modo diferente do FWH. Tem como cancelar a tecla ESC para que o usuário não feche a janela usando essa tecla? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 id=quote>id=quote>NAO EXISTE DIFERENCAS. STATIC lSaida := .F. ACTIVATE DIALOG oDlg... ; VALID( lSaida ) id=code>id=code>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 14, 2007 Author Report Share Posted March 14, 2007 João, No meu programa eu crio variáveis publicas para os campos dos arquivos e depois eu destruo essas variáveis no comando ACTIVATE...VALID. Acontece que no Fivewin ele fecha a janela numa boa e no FhW ele destroi as variáveis, fecha a janela e aparece um erro de variável inexistente. Estranho né? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2007 Report Share Posted March 14, 2007 citação:João, No meu programa eu crio variáveis publicas para os campos dos arquivos e depois eu destruo essas variáveis no comando ACTIVATE...VALID. Acontece que no Fivewin ele fecha a janela numa boa e no FhW ele destroi as variáveis, fecha a janela e aparece um erro de variável inexistente. Estranho né? (OASyS) Oscar Ribeiro Fwh2.7+xHb0.99.60+BCC551 id=quote>id=quote>VARIAVEIS PUBLICAS PARA OS CAMPOS DOS ARQUIVOS??? EXPLIQUE! EVITE USAR VARIAVEIS PUBLICAS, USE SOMENTE O NECESSÃRIO E IMPRESCINDIVEL, ABUSE DAS LOCAIS, MEMVAR E STATIC. 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 Nesse meu exemplo abaixo, se eu fecho a dialog com o enquanto o sistema pargunta se eu desejo gravar ele já fechou a dialog e já matou a variavel. Se eu fecho com o botão [Fechar] isso não acontece. Digite alguma coisa no campo get e faça o teste, por favor. #include "fivewin.ch" function main() local oWnd1, oWnd2, oDlg1, oBtn1, oGet1 Cria_Campos() 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 ( oBtn1:SetFocus(), IIF(Atualizou(oDlg1),Grava(),.T.), Destroi_Campos() ) ACTIVATE WINDOW oWnd1 MAXIMIZED return nil Function Cria_Campos() Public cVar1:=PadR("APARTE A TECLA E VEJA O RESULTADO",100) Return NIl Function Destroi_Campos() cVar1 := NIL RELEASE cVar1 Return (.t.) Function Grava() if msgyesno("O registro foi atualizado, deseja gravar?") campo1 := cVar1 // aqui dá erro, ele já destruiu os campos. msginfo( cVar1 ) endif Return (.T.) Function Atualizou(oDlg,lGravou) Local f:=1 local g:=1 local h:=1 local Contador:=0 lGravou := iif(lGravou=nil,.F.,lGravou) // Verifica se houve a gravacao While f<=Len(oDlg:aControls) //acontrols é uma propriedade de todas as dialogs e é criada automaticamente if oDlg:aControls[f]:ClassName()="TGET" .or. oDlg:aControls[f]:ClassName()="TMULTIGET" if oDlg:aControls[f]:cCaption<>; // Gets Antes oDlg:aControls[f]:cText // Gets Depois oDlg:aControls[f]:cCaption:=; // Atualiza cCaption oDlg:aControls[f]:cText if !lGravou // Se nao gravou Contador++ endif endif elseif oDlg:aControls[f]:ClassName()="TFOLDER" g := 1 While g<=Len(oDlg:aControls[f]:aDialogs) // Checa todos os Dialogs da Folder h := 1 While h<=Len(oDlg:aControls[f]:aDialogs[g]:aControls) if oDlg:aControls[f]:aDialogs[g]:aControls[h]:ClassName()="TGET" .or. oDlg:aControls[f]:aDialogs[g]:aControls[h]:ClassName()="TMULTIGET" if oDlg:aControls[f]:aDialogs[g]:aControls[h]:cCaption<>; // Gets Antes oDlg:aControls[f]:aDialogs[g]:aControls[h]:cText // Gets Depois oDlg:aControls[f]:aDialogs[g]:aControls[h]:cCaption:=; // Atualiza cCaption oDlg:aControls[f]:aDialogs[g]:aControls[h]:cText if !lGravou // Se nao gravou Contador++ endif endif endif h++ enddo g++ end endif f++ End if !lGravou .and. !Empty(Contador) Return(.T.) Endif Return(.F.) (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, acho que estou próximo de descobrir o motivo do erro: Se você fechar com o botão [Fechar] ele passa no VALID do Window apenas uma vez, mas se você fechar usando a tecla ele passa "duas" vezes. Isso é bug??? #include "fivewin.ch" function main() local oWnd1, oWnd2, oDlg1, oBtn1, oGet1, i:=0 Cria_Campos() 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 ( msginfo("passou "+str(i++)),.T. ) // , oBtn1:SetFocus(), IIF(Atualizou(oDlg1),Grava(),.T.), Destroi_Campos() ) ACTIVATE WINDOW oWnd1 MAXIMIZED return nil Function Cria_Campos() Public cVar1:=PadR("APARTE A TECLA E VEJA O RESULTADO",100) Return NIl (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 Essa situação de fechar com o e ele executar o VALID da Window duas vezes não acontece se compilado com Fivewin puro. Estranho né??? (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 Realmente existe um BUG no Fwh que passa duas vezes pelo VALID quando se fecha com ESC. Resolvi modificando a classe Window.prg removendo a instrução que controla a tecla ESC. (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.