Clipper On Line • Ver Tópico - Ao clicar no botão selecionar o method é chamado duas vezes
Mudar para estilo Clássico
Discussão sobre a biblioteca Fivewin - O Clipper para Windows.
Postar uma resposta

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

22 Dez 2015 15:20

Código:
//-> By João Santos - São Paulo - Brazil - kmt_karinha@pop.com.br - 23/11/06
//-> Participação Especial, Vailton Renato - renato@kssoftware.com.br

#Include "FiveWin.Ch"

STATIC oDlgRelog, oTimerRelog, lDesliga := .F., oWnd, oTimerPorta
STATIC oFnt, oSaida

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

FUNCTION RELOGIO()

    LOCAL oBrush
    LOCAL dDataDia

    SET DATE BRIT
    SET CENTURY ON
    SET EPOCH TO YEAR( DATE() ) - 30
    SET EXCLUSIVE OFF
    SET MULTIPLE OFF

    dDataDia := DTOC( DATE() )

    DEFINE BRUSH oBrush    RESOURCE "LOGO2" //-> PEGA A BITMAP DO ARQUIVO.RES(LOGO.BMP)

    DEFINE FONT oFnt      NAME "Arial"         SIZE 08,  20 BOLD

    DEFINE DIALOG oDlgRelog FROM 3, 3 TO 20, 50                               ;
           TITLE ( OemToAnsi( "Gerenciador do Rel¢gio do Sistema - "  +       ;
                              "Data: " + dDataDia ) )                         ;
           BRUSH oBrush TRANSPARENT                                           ;
           STYLE nOR( DS_MODALFRAME )

    oDlgRelog:lHelpIcon := .F.

    @ 005, 010 BUTTON oSaida PROMPT "&Finalizar" OF oDlgRelog                 ;
               SIZE 70, 14                                                    ;
               ACTION ( oDlgRelog:End ) CANCEL

    oSaida:cToolTip := ( OemToAnsi( "Finalizar Gerenciador do Rel¢gio " ) )

    SET FONT OF oSaida   TO oFnt

    ACTIVATE DIALOG oDlgRelog CENTERED RESIZE16                               ;
             ON INIT( ACIONA_TIMER( oWnd ) )

    IF lDesliga  //-> Se For .T., Desligar  o TIMER.
       oTimerRelog:DeActivate()
       oTimerPorta:DeActivate()
    ENDIF

    oFnt:End()
    oBrush:End()
    Release All

RETURN NIL

STATIC FUNCTION ACIONA_TIMER( oWnd )

    DEFINE TIMER oTimerPorta INTERVAL 50  OF oDlgRelog                        ;
           ACTION ACIONA_RELOGIO( oWnd )

    ACTIVATE TIMER oTimerPorta

RETURN NIL

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

STATIC FUNCTION ACIONA_RELOGIO( oWnd )

    LOCAL oFont

    DEFINE FONT oFont NAME "Arial" SIZE  0, -70 BOLD //-> Fonte Para o Relogio
    DEFINE FONT oFnt  NAME "Arial" SIZE 08,  20 BOLD //-> Fonte Para o BotÆo

    //-> Timer Que Ativa o Rel¢gio em Qualquer Lugar do Sistema

    DEFINE TIMER oTimerRelog INTERVAL 50                                      ;
           ACTION ExibeRelogio()

    ACTIVATE TIMER oTimerRelog

    //-> Fonte do Rel¢gio
    SET FONT OF oDlgRelog TO oFont
    SET FONT OF oSaida    TO oFnt

    oFont:End()

    lDesliga := .T.  //-> Para Desligar o Timer do Rel¢gio

    oTimerPorta:DeActivate()

RETURN NIL

//-> Para NÆo Pintar a Tela do Windows, By Vailton Renato - 23/11/2006

STATIC FUNCTION ExibeRelogio()

    IF ISWINDOWVISIBLE( oDlgRelog:hWnd )

        oDlgRelog:Say( 3, 07, TIME(),                                         ;
                  CLR_YELLOW, CLR_BLACK,, .F. )
        // .T. Esquerda - .F. Direita da Dialog.

    ENDIF

RETURN NIL

//-> FIM DO PROGRAMA <-------------------------------------------------------//



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

22 Dez 2015 15:31

Para estudar:

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=31287&p=181422&hilit=SetDialogEsc#p181422

Abs e um FELIZ NATAL.

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

23 Dez 2015 09:32

Kapiaba,não entendi os codigos que vc mandou,é para eu analisar q parte?

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

23 Dez 2015 09:46

Código:
CANCEL

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

23 Dez 2015 11:11

ja tinha tentando o CANCEL mas n adiantou,depois tentei CANCEL UPDATE,mas ja tirei e deixei so CANCEL e mesmo assim não adiantou.
não sei mais o que fazer :(

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

23 Dez 2015 11:18

Mostre o código(s) para leitura, fica mais fácil identificar o erro. de onde parte e para onde vai.

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

23 Dez 2015 14:32

ta certo
Código:
// Aqui é a chamada do botão buscar
//quando mando buscar ou cancelo a tela de busca a tela abre novamente
METHOD BuildButtons() CLASS CadFuncionarios
   LOCAL i,x,y,spc,coluna:=1,tBotoes:=::nBotoes
   ::aBotoes:=array(::nBotoes)
   ::nColunas:=5
   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)
   ENDDO
   @ x, y BUTTON ::aBotoes[1] PROMPT "&Incluir" OF ::oChild SIZE 80,22 PIXEL ACTION ::IncOuAlt(.T.) CANCEL
   y+=spc
   coluna+=1
   IF coluna>::nColunas
      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42
   ENDIF                                                     
   @ x, y BUTTON ::aBotoes[2] PROMPT "&Alterar" OF ::oChild SIZE 80,22 PIXEL WHEN (.NOT. ::vazio) ACTION ::IncOuAlt(.F.) CANCEL
   y+=spc
   coluna+=1
   IF coluna>::nColunas
      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42
   ENDIF
       // aqui a chamda da tela de busca
   @ x, y BUTTON ::aBotoes[3] PROMPT "&Buscar" OF ::oChild SIZE 80,22 PIXEL WHEN (.NOT. ::vazio) ACTION ::InitSrch() CANCEL
   y+=spc
   coluna+=1
   IF coluna>::nColunas
      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42
   ENDIF
   @ x, y BUTTON ::aBotoes[4] PROMPT "E&xcluir" OF ::oChild SIZE 80,22 PIXEL WHEN (.NOT. ::vazio) ACTION ::RemoveItem() CANCEL
   IF tBotoes!=nil .AND. tBotoes > 5
      tBotoes-=5
      //msginfo("Produzir espaço para os outros "+cValToStr(tBotoes,'99')+" botões")
      FOR i:=1 TO tBotoes
         y+=spc
         coluna+=1
         IF coluna>::nColunas
            y:=::xBrw:nLeft + 10
            coluna:=1
            x+=42
         ENDIF
      NEXT
   ENDIF
   IF (::nBotoes>5)
      ::BuildMoreButtons()
   ENDIF
   // mantendo o botão de sair à direita
   IF coluna>=::nColunas
      x+=42
   ELSE
      y:=((::xBrw:nLeft + ::xBrw:nWidth)-spc)
   ENDIF
   @ x, y BUTTON ::aBotoes[::nBotoes] PROMPT "&Sair" OF ::oChild SIZE 80,22 PIXEL ACTION ::oChild:end()
   x+=42
   IF ::oChild:nHeight < x
      x+=20
      ::oChild:nHeight(x)
   ENDIF
   
return nil

//aqui é a tela de busca
METHOD InitSrch() CLASS CadFuncionarios

LOCAL ametOrd := {"Nome", "Código", "Pis"} // Incluido por Gilberto
   
   SELE 1
   
   DEFINE DIALOG dlgBusca RESOURCE "#1244" TITLE "Buscar funcionário"

   ::campo := "Nome"
   ::valor := ""   
   
   REDEFINE SAY ID 4001
   
         //REDEFINE COMBOBOX ::gcampo VAR ::campo ITEMS {"Código", "Nome", "PIS"} ID 4005 VALID ::setIndex2() OF dlgBusca
     REDEFINE GET      ::gvalor VAR ::valor ID 4003 OF dlgBusca
         REDEFINE COMBOBOX ::gcampo VAR ::campo ITEMS ametOrd ID 4005 VALID ::setIndex2() OF dlgBusca
         
   
     REDEFINE BUTTON ID IDOK OF dlgBusca ACTION (::Srch(), dlgBusca:End()) CANCEL
     REDEFINE BUTTON ID IDCANCEL OF dlgBusca ACTION dlgBusca:End() CANCEL 
   
     ordsetfocus(2) // 2 ///
   ::gvalor:setfocus()

     ACTIVATE DIALOG dlgBusca CENTERED //ON INIT   // gilberto em outubro / 2013)
   
RETURN

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

23 Dez 2015 15:02

Veja o seu código, por outro PRISMA:

Código:
// Aqui é a chamada do botão buscar
//quando mando buscar ou cancelo a tela de busca a tela abre novamente
METHOD BuildButtons() CLASS CadFuncionarios

   LOCAL i,x,y,spc,coluna:=1,tBotoes:=::nBotoes

   ::aBotoes:=array(::nBotoes)
   ::nColunas:=5

   x := ::xBrw:nTop + ::xBrw:nHeight + 20
   y := ::xBrw:nLeft + 10
   spc := ((::xBrw:nWidth - 10)/::nColunas)

    // espaçamento mínimo é 84
    WHILE (spc < 84)

      ::nColunas-=1

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

      SYSREFRESH()

   ENDDO

   @ x, y BUTTON ::aBotoes[1] PROMPT "&Incluir" OF ::oChild SIZE 80,22 PIXEL ;
          ACTION( ::IncOuAlt(.T.) ) CANCEL

   y+=spc
   coluna+=1

   IF coluna>::nColunas
      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42
   ENDIF

   @ x, y BUTTON ::aBotoes[2] PROMPT "&Alterar" OF ::oChild SIZE 80,22 PIXEL ;
          WHEN ( .NOT. ::vazio ) ;
          ACTION( ::IncOuAlt(.F.) ) CANCEL

   y+=spc
   coluna+=1

   IF coluna>::nColunas

      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42

   ENDIF

   // aqui a chamda da tela de busca
   @ x, y BUTTON ::aBotoes[3] PROMPT "&Buscar" OF ::oChild SIZE 80,22 PIXEL ;
          WHEN (.NOT. ::vazio) ;
          ACTION( ::InitSrch() ) CANCEL

   y+=spc
   coluna+=1

   IF coluna>::nColunas

      y:=::xBrw:nLeft + 10
      coluna:=1
      x+=42

   ENDIF

   @ x, y BUTTON ::aBotoes[4] PROMPT "E&xcluir" OF ::oChild SIZE 80,22 PIXEL ;
          WHEN (.NOT. ::vazio) ;
          ACTION( ::RemoveItem() ) CANCEL

   IF tBotoes!=nil .AND. tBotoes > 5

      tBotoes-=5

      //msginfo("Produzir espaço para os outros "+cValToStr(tBotoes,'99')+" botões")
      FOR i:=1 TO tBotoes

         y+=spc

         coluna+=1

         IF coluna>::nColunas

            y:=::xBrw:nLeft + 10

            coluna:=1
            x+=42

         ENDIF

      NEXT

   ENDIF

   IF (::nBotoes>5)
      ::BuildMoreButtons() //??? VERIFIQUE SE ESTA CORRETO
   ENDIF

   // mantendo o botão de sair à direita
   IF coluna>=::nColunas

      x+=42

   ELSE

      y:=((::xBrw:nLeft + ::xBrw:nWidth)-spc)

   ENDIF

   // Voce colocou CANCEL em todos, menos no que deveria, que e o de SAIDA.
   @ x, y BUTTON ::aBotoes[::nBotoes] PROMPT "&Sair" OF ::oChild SIZE 80,22 ;
          PIXEL                                                             ;
          ACTION( ::oChild:end() ) CANCEL

   x+=42

   IF ::oChild:nHeight < x
     x+=20
     ::oChild:nHeight(x)
   ENDIF

return nil

//aqui é a tela de busca
METHOD InitSrch() CLASS CadFuncionarios

   LOCAL ametOrd := {"Nome", "Código", "Pis"} // Incluido por Gilberto

   SELE 1

   DEFINE DIALOG dlgBusca RESOURCE "#1244" TITLE "Buscar funcionário"

   ::campo := "Nome"
   ::valor := ""

   REDEFINE SAY ID 4001

   //REDEFINE COMBOBOX ::gcampo VAR ::campo ITEMS {"Código", "Nome", "PIS"} ID 4005 VALID ::setIndex2() OF dlgBusca
   REDEFINE GET   ::gvalor VAR ::valor ID 4003 OF dlgBusca UPDATE //??

   REDEFINE COMBOBOX ::gcampo VAR ::campo ITEMS ametOrd ID 4005 ;
            VALID( ::setIndex2() ) OF dlgBusca // ESSE VALID RETORNA .T. ou .F.??

   REDEFINE BUTTON ID IDOK OF dlgBusca ;
            ACTION ( ( ::Srch() ), dlgBusca:End() ) CANCEL  // MUDE ASSIM

   REDEFINE BUTTON ID IDCANCEL OF dlgBusca ACTION( dlgBusca:End() ) CANCEL

   ordsetfocus(2) // 2 ///  ???? O QUE E ISSO?? FAZ O QUE VEJA SE NAO TIRA O FOCO DO DIALOGO

   ::gvalor:setfocus()

   ACTIVATE DIALOG dlgBusca CENTERED //ON INIT // gilberto em outubro / 2013)

RETURN NIL  //???? nil MESMO?




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

23 Dez 2015 15:23

blz,vou dar uma pesquisada nos comentarios que vc colocou,pois não fui que fiz essas rotinas,so fiz implementar com o CANCEL
Mas muito obrigada pela ajuda

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

23 Dez 2015 15:33

Blz. FELIZ NATAL E UM PRÓSPERO ANO NOVO, nos vemos em: 04/01/2016. Abs.

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

03 Mai 2016 11:48

Se alguem puder me ajudar, eu nunca consegui resolver esse problema
ja verifiqueis os valid ja inserir cancel nos botões de saida,mas de nada adiantou

Código:
//----------------------------------------------------------------------------//
     
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)
   ENDDO
   FOR i:=1 TO 4
      y+=spc
      coluna+=1
      IF coluna>::nColunas
         y:=::xBrw:nLeft + 10
         coluna:=1
         x+=42
      ENDIF
   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()
   
   DEFINE DIALOG resDlg RESOURCE "#1035" OF ::oChild TITLE "Rescisão"

   REDEFINE SAY ID 4007 OF resDlg
   REDEFINE SAY ID 4004 OF resDlg
   REDEFINE SAY ID 4006 OF resDlg
   REDEFINE SAY ID 4010 OF resDlg
   REDEFINE SAY ID 4012 OF resDlg
   REDEFINE SAY ID 4014 OF resDlg
   REDEFINE SAY ID 4016 OF resDlg
   REDEFINE SAY ID 4027 OF resDlg
   
REDEFINE GET ::gDEMISSAO    VAR ::cDEMISSAO    ID 4008 OF resDlg;
   VALID EMPTY(::cDEMISSAO) .OR. ::cDEMISSAO>=::cADMISSAO
REDEFINE GET ::gRESVERBA    VAR ::cRESVERBA    ID 4003 OF resDlg;
   pict "999999" VALID grupok("1", ::cRESVERBA, @cRESVERBAdesc1, @gRESVERBAdesc1)        
REDEFINE BUTTONBMP ::bGetVerba ID 4019 OF resDlg BITMAP "#7002";
   ACTION (JSFltpr():New(resDlg,::gRESVERBA), IF(::gRESVERBA:lValid(), ::gRESCODSAC:setFocus(), ::gRESVERBA:setFocus()))
   
   REDEFINE SAY gRESVERBAdesc1 VAR cRESVERBAdesc1 ID 4002 OF resDlg

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

REDEFINE GET ::gCODMOV      VAR ::cCODMOV      ID 4005 OF resDlg;
  VALID ::checkCODMOV()       
REDEFINE BUTTONBMP ::bGetCODMOV  ID 4020 OF resDlg BITMAP "#7002";
   ACTION (JSFltbmv():New(resDlg, "Movimento SEFIP", ::gCODMOV), IF(::gCODMOV:lValid(), ::gRSCDESL:setFocus(), ::gCODMOV:setFocus()))
   REDEFINE SAY ::gDescCODMOV VAR ::cDescCODMOV ID 4024 OF resDlg
   
   RSCDESLArray = RSCDESLGetArray()

   REDEFINE GET ::gRSCDESL     VAR ::cRSCDESL     ID 4009 OF resDlg;
  PICT "99" VALID ::chkRSCDESL()
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 SAY ::gDescRSCDESL VAR ::cDescRSCDESL ID 4025 OF resDlg
   
REDEFINE GET ::gcoddemcag   VAR ::ccoddemcag  ID 4011 OF resDlg;
    PICT "99" VALID ( ::checkCoddemcag() .and. ::DtCagedDem() )
REDEFINE BUTTONBMP ::bGetCAGED ID 4022 OF resDlg BITMAP "#7002";
      ACTION ( demiscagok(@resDlg, @::gcoddemcag), if(::gcoddemcag:lValid(),;
   ::grepoevaga:SetFocus(),::gcoddemcag:SetFocus()) )
   REDEFINE SAY ::gdesccoddemcag VAR ::cdesccoddemcag ID 4026 OF resDlg
     
REDEFINE GET ::gRESCODSAC  VAR ::cRESCODSAC  ID 4013 OF resDlg;
  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 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 SAY ::gDescRESCODSAC  VAR ::cDescRESCODSAC ID 4023 OF resDlg
   
   REDEFINE GET ::gMULTAFGTS    VAR ::cMULTAFGTS    ID 4015 OF resDlg;
    PICT "@EZ 99,999.99" VALID ::cMULTAFGTS>=0
   
   REDEFINE GET ::gDtCagedD    VAR ::cDtCagedD    ID 4028 OF resDlg pict "99/99/9999" when(::ccoddemcag = "80") valid(::DtCagedDem())  //Data Caged Demissao
   
   REDEFINE CHECKBOX ::grepoevaga VAR ::crepoevaga ID 4017 OF resDlg
   
   REDEFINE BUTTON btok ID IDOK OF resDlg ACTION ::SalvarRescisao(resDlg) WHEN(::ValidCagedDem())
         
   REDEFINE BUTTON ID 4018 OF resDlg ACTION ::RestauraRescisao()
   REDEFINE BUTTON ID IDCANCEL ACTION ::oDlg:End() CANCEL
   ::gCODMOV:lValid()
   ::gRSCDESL:lValid()
   ::gcoddemcag:lValid()
   ::gRESCODSAC:lValid()
   ::DtCagedDem()   
   resDlg:bLostFocus := {|| ::bancos:Fechar(14)}
   ACTIVATE DIALOG resDlg CENTERED
return


Obs: não coloquei as chamadas de CadFuncFerias ou CadFuncAfast pq é chamada a outras classes,mas ja analisei e todos os botões de saida esta com o CANCEL

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

03 Mai 2016 12:38

de mais detalhes, o que ocorre exatamente e onde ocorre?

O que significa isto, qual e a finalidade disto dentro do Looping?

Código:
::gCODMOV:lValid()
::gRSCDESL:lValid()
  ::gcoddemcag:lValid()
::gRESCODSAC:lValid()
::DtCagedDem()
resDlg:bLostFocus := {|| ::bancos:Fechar(14)}

ACTIVATE DIALOG resDlg CENTERED



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

03 Mai 2016 15:57

Código:
METHOD lValid() CLASS TComboBox

   local lRet := .t.

   if ValType( ::bValid ) == "B"
      lRet = Eval( ::bValid, ::oGet, Self  )
   endif

return lRet
//-------------------------------------------------------------------
METHOD DtCagedDem() CLASS CadFuncionarios
//desabilita ou habilita caso condição seja atendida   
        ::gcoddemcag:Refresh()
     IF ::ccoddemcag = "80" .and. !EMPTY(::cDtCagedD)
        ::cDEMISSAO:= ::cDtCagedD
        ::gDEMISSAO:Refresh()
        ::gMULTAFGTS:Disable()
        ::gRESVERBA:Disable()
        ::gRESCODSAC:Disable()
        ::bGetVerba:Disable()
        bCodsaq:Disable()
     ELSE   
        ::gMULTAFGTS:Enable()
        ::gRESVERBA:Enable()
        ::gRESCODSAC:Enable()
        ::bGetVerba:Enable()
        bCodsaq:Enable()
     ENDIF

RETURN .T.



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

não sei exatamente para que serve pois n fui eu q desenvolvi,
mas oq eu entendi é q o a tabela 14 sera fechada, se esse tiver o focus nesse botão "bLostFocus". acredito que seja isso.

Não sei exatamente o que acontece,pois isso so acontece esporadicamente
na minha maquina não acontece so em alguns clientes.
o que ocorre é que quando eu clico no botão fechar de uma janela, depois que clico ela abre sozinha novamente.
Pensei que fosse o foco que estava voltando para o botão,mas analisei o codigo e não achei nada disso

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

03 Mai 2016 16:56

o que ocorre é que quando eu clico no botão fechar de uma janela, depois que clico ela abre sozinha novamente.

Quando voce diz botão fechar, não é o X da janela, é?

Se a Janela se reinicia sozinha, tem algum VALID que está retornando NULL, pare os VALIDS() e veja qual que não está bem.

Esta lógica, desculpe a honestidade, ta ruim pra karamba, nos GETS e SAYS não tem nem o comando UPDATE, quem programava em Fivewin ai, programava de muita má vontade, ou não entendia lhufas de Fivewin.

Cabe a vc. estudar e melhorar o código. abs.

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

04 Mai 2016 09:37

Pode ser no botão fechar que é X ou no botão IDCANCEL, todos os dois ocorre essa situação.

é meu amigo,obrigada pela honestidade.
Foram vários programadores que passaram por aqui e aprendi com ultimo que ficou aqui,mas como vc disse,cabe a mim estudar mais e fazer de forma correta.
Postar uma resposta