Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Posts posted by oribeiro

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Quando fecho minhas janelas com dá erro de variável não existe no fwh e no fw não dá. A variável está criada!

    Ativo minhas janelas assim:

    ACTIVATE DIALOG oDlgP NOWAIT VALID oWndC:End()

    ACTIVATE WINDOW oWndC ;

    VALID ( tBtPrinc[9]:SetFocus() ,iif(Atualizou(oDlgP),(Grava(.T.)),.T.),oScb:SetFocus(),Destroi_Campos(),oLbx:Disable(),Fecha_Formulario(oWndC,oDlgP,oLbx,cFrm,cPrg))

    Fwh2.7+xHb0.99.60+BCC551

  8. Quando fecho minhas janelas com dá erro de variável não existe no fwh e no fw não dá. A variável está criada!

    Ativo minhas janelas assim:

    ACTIVATE DIALOG oDlgP NOWAIT VALID oWndC:End()

    ACTIVATE WINDOW oWndC ;

    VALID ( tBtPrinc[9]:SetFocus() ,iif(Atualizou(oDlgP),(Grava(.T.)),.T.),oScb:SetFocus(),Destroi_Campos(),oLbx:Disable(),Fecha_Formulario(oWndC,oDlgP,oLbx,cFrm,cPrg))

    Fwh2.7+xHb0.99.60+BCC551

×
×
  • Create New...