FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Can not disable GET when using WHEN clause
Posts: 246
Joined: Sat Mar 03, 2007 08:42 PM
Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 10:05 AM
Hello,

Is this a bug or a feature? :-)

You can not disable any control when you use a WHEN clause. For example:

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2
   LOCAL cVar1:="test 1"
   LOCAL cVar2:="test 2"
   
   SetGetColorFocus()

   DEFINE DIALOG oDlg TITLE "Test"
   
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN .T.
   
   oGet2:Disable()

   @ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
   @ 3,16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL


Is this a feature or a bug?

Patrick
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 11:08 AM
Patrick,

Patrick Mast wrote:Hello,

Is this a bug or a feature? :-)

You can not disable any control when you use a WHEN clause. For example:

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2
   LOCAL cVar1:="test 1"
   LOCAL cVar2:="test 2"
   
   SetGetColorFocus()

   DEFINE DIALOG oDlg TITLE "Test"
   
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 //when .T.
   
   
   @ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
   @ 3,16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL

   ACTIVATE DIALOG oDlg CENTERED ON INIT(oGet2:Disable())

RETURN NIL


Is this a feature or a bug?

Patrick
ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 246
Joined: Sat Mar 03, 2007 08:42 PM
Re: Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 12:07 PM
Hey SGS,

Thanks for your sample. But I actualy want to do this:

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2
   LOCAL cVar1:="test 1"
   LOCAL cVar2:="test 2"
   
   SetGetColorFocus()

   DEFINE DIALOG oDlg TITLE "Test"
   
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN .T.
   
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION oGet2:Disable()
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION oGet2:Enable()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

And that does not work.

Patrick
Posts: 167
Joined: Thu Mar 22, 2007 11:24 AM
Re: Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 02:13 PM
Patrick

It is normal. I placed a tracelog in the when clausule :
@ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN (tracelog(),.T.)
with as result :

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
DIALOG.PRG->TDIALOG:INITIATE(0)
DIALOG.PRG->TDIALOG:HANDLEEVENT(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
CONTROL.PRG->TGET:FORWHEN(0)
CONTROL.PRG->TGET:FWLOSTFOCUS(0)
CONTROL.PRG->TCONTROL:HANDLEEVENT(0)
TGET.PRG->TGET:HANDLEEVENT(0)
WINDOW.PRG->_FWH(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
CONTROL.PRG->(b)TCONTROL:TCONTROL(0)
->TCONTROL:CLICK(0)
BUTTON.PRG->TBUTTON:CLICK(0)
CONTROL.PRG->TBUTTON:HANDLEEVENT(0)
WINDOW.PRG->_FWH(0)
->SENDMESSAGE(0)
DIALOG.PRG->TDIALOG:COMMAND(0)
->TWINDOW:HANDLEEVENT(0)
DIALOG.PRG->TDIALOG:HANDLEEVENT(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

After the disable is executed follows a aevalwhen and is the when clausule evaluated.

The when clausule must depend from the action from the button !

Frank


#include "FiveWin.ch"

FUNCTION Main() 

   LOCAL oDlg, oGet1, oGet2 
   LOCAL cVar1:="test 1" 
   LOCAL cVar2:="test 2" 
	 LOCAL lEnable := .T.
    
   SetGetColorFocus() 

   DEFINE DIALOG oDlg TITLE "Test" 
    
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10 
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN (tracelog(),lEnable) 
    
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION (lEnable := .F.) 
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION (lEnable := .T.) 

   ACTIVATE DIALOG oDlg CENTERED 

RETURN NIL



Patrick Mast wrote:Hey SGS,

Thanks for your sample. But I actualy want to do this:

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2
   LOCAL cVar1:="test 1"
   LOCAL cVar2:="test 2"
   
   SetGetColorFocus()

   DEFINE DIALOG oDlg TITLE "Test"
   
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN .T.
   
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION oGet2:Disable()
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION oGet2:Enable()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

And that does not work.

Patrick
Posts: 167
Joined: Thu Mar 22, 2007 11:24 AM
Re: Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 02:13 PM
Patrick

It is normal. I placed a tracelog in the when clausule :
@ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN (tracelog(),.T.)
with as result :

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
DIALOG.PRG->TDIALOG:INITIATE(0)
DIALOG.PRG->TDIALOG:HANDLEEVENT(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
CONTROL.PRG->TGET:FORWHEN(0)
CONTROL.PRG->TGET:FWLOSTFOCUS(0)
CONTROL.PRG->TCONTROL:HANDLEEVENT(0)
TGET.PRG->TGET:HANDLEEVENT(0)
WINDOW.PRG->_FWH(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

[testfw.prg->(b)MAIN] (14) Called from:
WINDOW.PRG->TDIALOG:AEVALWHEN(0)
CONTROL.PRG->(b)TCONTROL:TCONTROL(0)
->TCONTROL:CLICK(0)
BUTTON.PRG->TBUTTON:CLICK(0)
CONTROL.PRG->TBUTTON:HANDLEEVENT(0)
WINDOW.PRG->_FWH(0)
->SENDMESSAGE(0)
DIALOG.PRG->TDIALOG:COMMAND(0)
->TWINDOW:HANDLEEVENT(0)
DIALOG.PRG->TDIALOG:HANDLEEVENT(0)
->DIALOGBOXINDIRECT(0)
DIALOG.PRG->TDIALOG:ACTIVATE(0)
testfw.prg->MAIN(19)

After the disable is executed follows a aevalwhen and is the when clausule evaluated.

The when clausule must depend from the action from the button !

Frank


#include "FiveWin.ch"

FUNCTION Main() 

   LOCAL oDlg, oGet1, oGet2 
   LOCAL cVar1:="test 1" 
   LOCAL cVar2:="test 2" 
	 LOCAL lEnable := .T.
    
   SetGetColorFocus() 

   DEFINE DIALOG oDlg TITLE "Test" 
    
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10 
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN (tracelog(),lEnable) 
    
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION (lEnable := .F.) 
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION (lEnable := .T.) 

   ACTIVATE DIALOG oDlg CENTERED 

RETURN NIL



Patrick Mast wrote:Hey SGS,

Thanks for your sample. But I actualy want to do this:

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2
   LOCAL cVar1:="test 1"
   LOCAL cVar2:="test 2"
   
   SetGetColorFocus()

   DEFINE DIALOG oDlg TITLE "Test"
   
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN .T.
   
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION oGet2:Disable()
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION oGet2:Enable()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

And that does not work.

Patrick
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Can not disable GET when using WHEN clause
Posted: Sat Aug 16, 2008 07:10 PM
Patrick,

Try it this way:
#include "FiveWin.ch" 

FUNCTION Main() 

   LOCAL oDlg, oGet1, oGet2, lStatus := .T. 
   LOCAL cVar1:="test 1" 
   LOCAL cVar2:="test 2" 
    
   SetGetColorFocus() 

   DEFINE DIALOG oDlg TITLE "Test" 
    
   @ 1, 6 GET oGet1 VAR cVar1 OF oDlg SIZE 60, 10 
   @ 2, 6 GET oGet2 VAR cVar2 OF oDlg SIZE 60, 10 WHEN lStatus 
    
   @ 3, 7 BUTTON "Disable" SIZE 30, 12 OF oDlg ACTION ( lStatus := .F., oDlg:AEvalWhen() )
   @ 3,16 BUTTON "Enable"  SIZE 30, 12 OF oDlg ACTION ( lStatus := .T., oDlg:AEvalWhen() )

   ACTIVATE DIALOG oDlg CENTERED 

RETURN NIL
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion