Jump to content
Fivewin Brasil

Diferenças entre FW e FWH


oribeiro

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...