Created
July 29, 2019 14:52
-
-
Save MarkGoldberg/ee34ab08bb04f3838817dc55ba4f51b2 to your computer and use it in GitHub Desktop.
Clarion - USE( AnyVar ) work around
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!for the 'ctQ_FeqAny.clw' | |
MEMBER() | |
INCLUDE('ctQ_FeqAny.inc'),ONCE | |
MAP | |
END | |
! NoError EQUATE(0) ! or | |
INCLUDE('Errors.clw'),ONCE | |
!======================================= | |
ctQ_FeqAny.CONSTRUCT PROCEDURE() | |
CODE | |
SELF.Q &= NEW qtFeqAny | |
CLEAR(SELF.Q) | |
SELF.BaseQ &= SELF.Q | |
!!======================================= | |
!ctQ_FeqAny.Del PROCEDURE()!,DERIVED | |
! CODE | |
! PARENT.Del() | |
!======================================= | |
ctQ_FeqAny.Description PROCEDURE() | |
CODE | |
RETURN 'ctQ_FeqAny' | |
!======================================= | |
ctQ_FeqAny.ToString PROCEDURE()!,STRING,DERIVED | |
CODE | |
RETURN 'FEQ[' & SELF.Q._FEQ &']' | | |
& 'Value[' & SELF.Q.Value &']' | | |
& Parent.ToString() | |
!======================================= | |
ctQ_FeqAny.Update PROCEDURE() | |
CODE | |
SELF.PrepForLoop() | |
LOOP WHILE SELF.GetNextRow() = NoError | |
SELF.Q.Value = CONTENTS( SELF.Q._FEQ ) | |
END | |
!======================================= | |
ctQ_FeqAny.Display PROCEDURE() | |
CODE | |
SELF.PrepForLoop() | |
LOOP WHILE SELF.GetNextRow() = NoError | |
CHANGE( SELF.Q._FEQ, SELF.Q.Value ) | |
END | |
!======================================= | |
ctQ_FeqAny.Add PROCEDURE( SIGNED xFEQ, *? xValue) | |
CODE | |
CLEAR(SELF.Q) | |
SELF.Q._FEQ = xFEQ | |
SELF.Q.Value &= xValue ! &= vs. = is important | |
ADD(SELF.Q, SELF.Q._FEQ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
INCLUDE('ctQueue.inc'),ONCE ! see https://github.com/MarkGoldberg/CwUnit/blob/master/Libsrc/ctQueue.inc | |
gtFeqAny GROUP,TYPE | |
_FEQ SIGNED | |
Value ANY | |
END | |
qtFeqAny QUEUE(gtFeqAny),TYPE | |
END | |
ctQ_FeqAny CLASS(ctQueue),TYPE,MODULE('ctQ_FeqAny.clw'),LINK('ctQ_FeqAny.clw') | |
Q &qtFeqAny | |
!------------------------ | |
CONSTRUCT PROCEDURE() | |
!Del PROCEDURE(),DERIVED | |
Description PROCEDURE(),STRING,DERIVED | |
ToString PROCEDURE(),STRING,DERIVED | |
Update PROCEDURE() | |
Display PROCEDURE() | |
Add PROCEDURE( SIGNED xFEQ, *? xValue) | |
END | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PROGRAM | |
MAP | |
GroupToControls(*GROUP xGrp, LONG xYPOS, *ctQ_FeqAny xFEQAnyQ) | |
END | |
Window WINDOW('Caption'),AT(,,395,224),GRAY,FONT('Microsoft Sans Serif',8) | |
BUTTON('&Close'),AT(333,201,42,14),USE(?Close),STD(STD:Close) | |
END | |
INCLUDE('ctQ_FEQAny.inc'),ONCE | |
FeqAnyQ ctQ_FeqAny | |
SomeGroup GROUP | |
A STRING(10) | |
B STRING(20) | |
C DATE | |
END | |
INCLUDE('debuger.inc'),ONCE ! see https://github.com/MarkGoldberg/ClarionCommunity/blob/master/CW/Shared/Src/debuger.inc | |
dbg debuger | |
CODE | |
dbg.mg_init('GroupToControls') | |
dbg.DebugOut('Test') | |
SomeGroup.A = 'Hello' | |
SomeGroup.B = 'There' | |
SomeGroup.C = TODAY() | |
OPEN(Window) | |
GroupToControls( SomeGroup, 15, FeqAnyQ) | |
dbg.DebugOut('About to call FeqAnyQ.Display()') | |
FeqAnyQ.Display() | |
dbg.DebugOut('About to enter the accept loop') | |
ACCEPT | |
FeqAnyQ.Update() | |
dbg.DebugOut('In Accept loop') | |
FeqAnyQ.Display() | |
FeqAnyQ.Dump('') | |
dbg.DebugOUt('A[' & SomeGroup.A &'] B['& SomeGroup.B & '] C['& SomeGroup.C &']') | |
END | |
!-------------------------------------------------------------------------- | |
GroupToControls PROCEDURE(*GROUP xGroup, LONG xYPOS, *ctQ_FeqAny xFEQAnyQ) | |
CurrFEQ SIGNED,AUTO | |
FieldNum LONG( 1) | |
CurrWhat ANY | |
CODE | |
LOOP | |
! IF WHAT(xGroup, FieldNum) &= NULL THEN BREAK END ! compile error, Illegal reference assigment or equivalence | |
dbg.debugOut('FieldNum[' & FieldNum &']') | |
CurrWhat &= WHAT(xGroup, FieldNum) | |
IF CurrWhat &= NULL THEN BREAK END | |
! could attempt to set control type, and picture based on some reflection of the group | |
! could add PROMPTs and set their prop:text from the WHO( xGroup, FieldNum ) | |
CurrFEQ = CREATE(0, CREATE:Entry) | |
SETPOSITION( CurrFEQ, 10, xYPos, 60, 10) | |
CurrFEQ{PROP:Text} = '@S50' | |
CurrFEQ{PROP:Hide} = FALSE | |
xFEQAnyQ.Add( CurrFEQ, WHAT( xGroup, FieldNum) ) | |
xYPOS += 20 | |
FieldNum += 1 | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment