Page 1 of 1
Fwh 8.08 - Corrections in classes
Posted: Tue Oct 21, 2008 12:30 pm
by ORibeiro
Corrections in class:
Fwh 8.08:
Class: SAY.PRG = Removes line 266 because it makes the text to disrespect the limit of the field defined in the resource
// ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
Class: WINDOW.PRG = Removes the line 2434 of the KeyChar method () because it makes with that keyboard key ESC in the systems using windows MDI take off the focus of the MsgYesNo ()
// ::oWnd:KeyChar( nKey, nFlags )
Thank´s
_ Ribeiro
Posted: Mon Oct 27, 2008 11:42 am
by Antonio Linares
_,
>
Class: SAY.PRG = Removes line 266 because it makes the text to disrespect the limit of the field defined in the resource
// ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
>
This has been improved in FWH 8.09 and 8.10
>
Class: WINDOW.PRG = Removes the line 2434 of the KeyChar method () because it makes with that keyboard key ESC in the systems using windows MDI take off the focus of the MsgYesNo ()
// ::oWnd:KeyChar( nKey, nFlags )
>
Could you provide a small example to test it ? Do you mean to press ESC on a MsgYesNo() shown on top of a MDI frame or a MDI child ? thanks,
Posted: Fri Oct 31, 2008 1:37 pm
by ORibeiro
Hi Antonio,
It is a pleasure to contact you.
The problem happens with MDI Child. In my application, when I pressure ESC to close the Child Window the MsgYesNo(“Desires to leave?”) he is disoriented and not insurance the focus in it.
I tried to reproduce in a small example but I did not obtain.
All new version is necessary to disactivate this line that I mentioned in the Window.prg to correct this problem.
I wait to have helped.
Thanks a lot.
_ Ribeiro
Posted: Fri Oct 31, 2008 5:51 pm
by Antonio Linares
_,
Do you call MsgYesNo() from the VALID of the MDI child window ?
Posted: Mon Nov 03, 2008 1:07 pm
by ORibeiro
Antonio,
This is my VALID.
Code: Select all
ACTIVATE DIALOG oDlgP NOWAIT VALID oWndC:End()
ACTIVATE WINDOW oWndC ;
ON PAINT FnSelect(cDbf[01]);
VALID (SysWait(0.1),tBtPrinc[09]:SetFocus(),iif(Atualizou(oDlgP),(Grava(.T.)),.T.),oScb:SetFocus(),Destroi_Campos(),;
Fecha_Arquivo(cDbf[1]),Fecha_Formulario(oWndC,oDlgP,,cFrm,cPrg) )
********************************************************************************************
FUNCTION Atualizou(oDlg,lGravou)
********************************************************************************************
* Verifica se houve alteracoes na get sem serem salvas *
Local f:=1
local g:=1
local h:=1
local Contador:=0
local a,b
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"
a := oDlg:aControls[f]:cCaption // Gets Antes
b := oDlg:aControls[f]:cText // Gets Depois
if a<>b
oDlg:aControls[f]:cCaption:=b // Atualiza cCaption
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"
a := oDlg:aControls[f]:aDialogs[g]:aControls[h]:cCaption // Gets Antes
b := oDlg:aControls[f]:aDialogs[g]:aControls[h]:cText // Gets Depois
if a<>b
oDlg:aControls[f]:aDialogs[g]:aControls[h]:cCaption:=b // Atualiza cCaption
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.)
********************************************************************************************
Static function Grava(lConf)
********************************************************************************************
If lConf
if !MsgYesNo("Confirma a gravação?","Confirme")
Return(.F.)
endif
Endif
// VÁLIDO //
if !Valido()
Return(.F.)
endif
Select (cDBF[01])
// Se alterou o Nome, modifica arquivos relacionados //
if cNovo<>"NOVO" .and. Field->Nome<>CFNome[2]
FnAltNome( "FOR", cPrg, CFNome[2], Field->Nome )
endif
Select(cDbf[01])
FnReplace(,,,cPrg,cDbf[1],cNovo,.T.)
cNovo := "CONSULTA"
Atualiza_Campos()
CFAbrev[1]:Setfocus()
CFNr_Fo[1]:SetFocus()
Return(.T.)
Thank you.
Posted: Wed Nov 05, 2008 5:09 pm
by ORibeiro
Dear Antonio,
Does you read my example?
Thanks
Posted: Sun Nov 09, 2008 7:18 pm
by miragerr
Comigo isso tambem acontece
Uma coisa que percebi é que se EU comento esta linha na
Window.prg funciona normal
ORIGINAL
Code: Select all
METHOD EndPaint() INLINE ::nPaintCount--,;
EndPaint( ::hWnd, ::cPS ), ::cPS := nil, ::hDC := nil , 0 // keep this zero here!
MODIFICADO
Code: Select all
METHOD EndPaint() INLINE ::nPaintCount--,;
EndPaint( ::hWnd, ::cPS ), ::cPS := nil, ::hDC := nil // , 0 // keep this zero here! ///// ---->>> comento o ZERO
Desta forma funciona normal, quando tenho VALID nas dialogs
Fico no aguardo
It´s possible to solve
Posted: Fri Nov 28, 2008 7:08 pm
by ORibeiro
Antonio,
It´s possible to solve in next version?
Thanks
_
Posted: Fri Nov 28, 2008 8:24 pm
by Antonio Linares
_,
We need a small and self contained example to test here.
Please provide us an example that reproduces what you describe, thanks
Posted: Fri Nov 28, 2008 8:26 pm
by Antonio Linares
Jackson,
You should not remove that zero. Its important to keep it here.
Please provide a small and self contained example to reproduce the problem with a dialog, thanks