Ao clicar no botão selecionar o method é chamado duas vezes

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Veja uma pequena mexida... Como eu faria...

Código: Selecionar todos

//----------------------------------------------------------------------------//
   
METHOD BuildMoreButtons() CLASS CadFuncionarios

 LOCAL i,x,y,spc,coluna:=1
 x := ::xBrw:nTop + ::xBrw:nHeight + 20
 y := ::xBrw:nLeft + 10
 spc := ((::xBrw:nWidth - 10)/::nColunas)
 // espaçamento mínimo é 84

 DO WHILE (spc < 84)

   ::nColunas-=1

   spc := ((::xBrw:nWidth - 10)/::nColunas)

   SYSREFRESH()

 ENDDO

 FOR i:=1 TO 4
  y+=spc
  coluna+=1
  IF coluna>::nColunas
   y:=::xBrw:nLeft + 10
   coluna:=1
   x+=42
  ENDIF

   SYSREFRESH()

 NEXT

 @ x, y BUTTON ::aBotoes[5] PROMPT "&Rescisão" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION ::Rescisao()

 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[6] PROMPT "&Ferias" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION CadFuncFerias():New(::oChild) 
 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[7] PROMPT "Fi&cha" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION IF ( MsgSimNao("Imprime a Ficha?", " Confirmação"), RelFichaFuncionario():New(), ) 
 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[8] PROMPT "Afas&tamento" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION CadFuncAfast():New(::oChild) 
 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[9] PROMPT "&Modalidade" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION ::Modalidade() 
 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[10] PROMPT "&Outros Vínculos" OF ::oChild SIZE 80,22 PIXEL WHEN .NOT. ::vazio ACTION ::OUTVINC() 
 y+=spc
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
 @ x, y BUTTON ::aBotoes[11] PROMPT "&Visualizar Ativos" OF ::oChild SIZE 90,22 PIXEL ACTION ::filtrar() 
 y+=spc+15
 coluna+=1
 IF coluna>::nColunas
  y:=::xBrw:nLeft + 10
  coluna:=1
  x+=42
 ENDIF
::xBrw:SetFocus()
return

//-------------------------------------------------------------------------------------------------

METHOD Rescisao() CLASS CadFuncionarios

 local resDlg, btok, aCodSaq, gRESVERBAdesc1, cRESVERBAdesc1, gRESVERBAdesc2,;
 cRESVERBAdesc2, gRESVERBAdesc3, cRESVERBAdesc3
  
 ::bancos:Abrir(14)

 ::InicializaRescisao()
 
 // OF ::oChild  MESMO??
 DEFINE DIALOG resDlg RESOURCE "#1035" OF ::oChild TITLE "Rescisão"

 REDEFINE SAY ID 4007 OF resDlg UPDATE
 REDEFINE SAY ID 4004 OF resDlg UPDATE
 REDEFINE SAY ID 4006 OF resDlg UPDATE
 REDEFINE SAY ID 4010 OF resDlg UPDATE
 REDEFINE SAY ID 4012 OF resDlg UPDATE
 REDEFINE SAY ID 4014 OF resDlg UPDATE
 REDEFINE SAY ID 4016 OF resDlg UPDATE
 REDEFINE SAY ID 4027 OF resDlg UPDATE
 
 REDEFINE GET ::gDEMISSAO  VAR ::cDEMISSAO  ID 4008 OF resDlg;
  VALID EMPTY(::cDEMISSAO) .OR. ::cDEMISSAO>=::cADMISSAO  UPDATE

 REDEFINE GET ::gRESVERBA  VAR ::cRESVERBA  ID 4003 OF resDlg  UPDATE ;
  pict "999999" VALID grupok("1", ::cRESVERBA, @cRESVERBAdesc1, @gRESVERBAdesc1)

 REDEFINE SAY gRESVERBAdesc1 VAR cRESVERBAdesc1 ID 4002 OF resDlg  UPDATE

 grupok("1", ::cRESVERBA, @cRESVERBAdesc1, @gRESVERBAdesc1)

 REDEFINE GET ::gCODMOV  VAR ::cCODMOV  ID 4005 OF resDlg UPDATE ;
 VALID ::checkCODMOV()

 REDEFINE SAY ::gDescCODMOV VAR ::cDescCODMOV ID 4024 OF resDlg UPDATE
 
 RSCDESLArray = RSCDESLGetArray()  //???

 REDEFINE GET ::gRSCDESL  VAR ::cRSCDESL  ID 4009 OF resDlg UPDATE ;
 PICT "99" VALID ::chkRSCDESL()

 REDEFINE SAY ::gDescRSCDESL VAR ::cDescRSCDESL ID 4025 OF resDlg UPDATE
 
 REDEFINE GET ::gcoddemcag VAR ::ccoddemcag ID 4011 OF resDlg UPDATE ;
  PICT "99" VALID ( ::checkCoddemcag() .and. ::DtCagedDem() )

 REDEFINE SAY ::gdesccoddemcag VAR ::cdesccoddemcag ID 4026 OF resDlg UPDATE
  
 REDEFINE GET ::gRESCODSAC VAR ::cRESCODSAC ID 4013 OF resDlg UPDATE;
 PICT "99" VALID ::ChkCodSaq()
 
 aCodSaq:= {"01 - Dispensa sem justa causa",;
 "02 - Dispensa com culpa recíproca ou força maior",;
 "03 - Extinção da empresa",;
 "04 - Extinção do contrato de trabalho p/prazo determinado",;
 "05 - Aposentadoria",;
 "06 - Suspensão do trabalho avulso por período igual ou superior a 90 dias",;
 "07 - Afastamento de trabalhador avulso portuário",;
 "10 - Rescisão com indenização (não optante)",;
 "23 - Falecimento do titular da conta",;
 "26 - Rescisão s/ pgto. de indenização ou fim de prazo prescricional (Reclamação trabalhista)",;
 "27 - Pagamento do depósito de que trata o art. 73 do regulamento do FGTS",;
 "50 - Complemento de atualização monetária inferior a R$100,00",;
 "70 - Idade igual ou superior a setenta anos",;
 "80 - Portador de SIDA/AIDS",;
 "81 - Neoplasia Maligna",;
 "86 - Sem crédito de depósito por 3 anos, com afastamento a partir de 14/07/90",;
 "87 - Sem crédito de depósito por 3 anos, com afastamento até 13/07/90",;
 "88 - Determinação judicial"}

 

 REDEFINE SAY ::gDescRESCODSAC VAR ::cDescRESCODSAC ID 4023 OF resDlg UPDATE
 
 REDEFINE GET ::gMULTAFGTS  VAR ::cMULTAFGTS  ID 4015 OF resDlg UPDATE;
  PICT "@EZ 99,999.99" VALID ::cMULTAFGTS>=0
 
 REDEFINE GET ::gDtCagedD  VAR ::cDtCagedD  ID 4028 OF resDlg ;
    pict "99/99/9999"  UPDATE ;
    when(::ccoddemcag = "80") valid(::DtCagedDem()) //Data Caged Demissao
 
 REDEFINE CHECKBOX ::grepoevaga VAR ::crepoevaga ID 4017 OF resDlg

 // AREA DOS BOTOES, CADA MAKAKO NO SEU GALHO...

 REDEFINE BUTTONBMP ::bGetVerba ID 4019 OF resDlg BITMAP "#7002";
 ACTION (JSFltpr():New(resDlg,::gRESVERBA), IF(::gRESVERBA:lValid(), ::gRESCODSAC:setFocus(), ::gRESVERBA:setFocus()))

 REDEFINE BUTTONBMP ::bGetCODMOV ID 4020 OF resDlg BITMAP "#7002";
 ACTION (JSFltbmv():New(resDlg, "Movimento SEFIP", ::gCODMOV), IF(::gCODMOV:lValid(), ::gRSCDESL:setFocus(), ::gCODMOV:setFocus()))

 REDEFINE BUTTONBMP ::bGetRSCDESL ID 4021 OF resDlg BITMAP "#7002";
  ACTION (JanSeletor():New(resDlg, ::gRSCDESL, 760, 300, "Informações do Desligamento", RSCDESLArray), if(::gRSCDESL:lValid(),;
 ::gcoddemcag:SetFocus(),::gRSCDESL:SetFocus()) )

 REDEFINE BUTTONBMP ::bGetCAGED ID 4022 OF resDlg BITMAP "#7002";
  ACTION ( demiscagok(@resDlg, @::gcoddemcag), if(::gcoddemcag:lValid(),;
 ::grepoevaga:SetFocus(),::gcoddemcag:SetFocus()) )
 
 REDEFINE BUTTONBMP bCodsaq ID 4001 OF resDlg BITMAP "#7002" ;
  ACTION (JanSeletor():New(resDlg,::gRESCODSAC,590, 350,"Saques FGTS",aCodSaq), IF(::gRESCODSAC:lValid(), ::gCODMOV:setFocus(), ::gRESCODSAC:setFocus()))
 
 REDEFINE BUTTON btok ID IDOK OF resDlg ;
    ACTION( ::SalvarRescisao(resDlg) )  ;
    WHEN(::ValidCagedDem()) CANCEL
   
 REDEFINE BUTTONBMP ID 4018 OF resDlg ;
    ACTION( ::RestauraRescisao() ) CANCEL

 REDEFINE BUTTONBMP ID IDCANCEL ACTION( ::oDlg:End() ) CANCEL UPDATE  // TESTE ASSIM

 ::gCODMOV:lValid()
 ::gRSCDESL:lValid()
  ::gcoddemcag:lValid()
 ::gRESCODSAC:lValid() 
 ::DtCagedDem()

 resDlg:bLostFocus := {|| ::bancos:Fechar(14)}

 ACTIVATE DIALOG resDlg CENTERED

return NIL
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

Olá Kapiaba,obrigada pela ajuda,acabei de fazer as modificações nesta parte do codigo
agora vou fazer no restante que na verdade é muito codigo que vou precisar alterar então fica a pergunta
usarei UPDATE em todos os campos exceto checkbox e combobo né isso?
e nos botões de salvar restaurar ou Cancelar eu uso o CANCEL UPDATE
é isso mesmo?
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Daiane, a melhor forma de aprender e entender quando se deve usar um comando, é indo na pasta do FIVEWIN the best.

exemplo:

C:\FWH..\INCLUDE\FIVEWIN.CH - Edite e leia os comandos e controles, verás onde o COMANDO UPDATE entra e serve como base de aprendizado.

No caso dos Botões do seus sistema, é mais complexo, pois pode conter ao meu ver, erro de lógica, ou alguma coisa que funcionava em uma versão velha do five e nessa que você usa, não surte o mesmo efeito. Pode ser ou não.

O que você pode fazer, é testar no cliente com CANCEL e com CANCEL UPDATE, para ver a reação do programa, e ai, você decide em qual local ou função, ficará com CANCEL ou com CANCE UPDATE... Só testando.

O ideal, é que se sua versão for antiga, peça para que comprem a última versão do FiveWin, que aliás, está maravilhosa.

Se aprovarem, peça um orçamento junto ao Gilmer no email: gilmer@fivewin.com.br

Skype: gilmerorrotavares

Representante oficial do FiveWin the best no Brasil.

Dúvidas, vá perguntando. Abraços.
Responder