inherited class variables

jmv jmvoegeli at bluewin.ch
Fri Oct 15 12:50:47 UTC 2021


Hello $lister,

I would like to override class variables declared in a super class programmatically.

I am unable to get a valid reference of the group $cvars (where the super class variable are listed)

I can get a valid reference to the $cvardefs group but the super class variable are not there

Here is my code :


Selected methods for Class 'Aikikan.o_Meta_Code' as at 15 oct 2021 14:34:27 Page 1
##### Method '$Obj_Build_Super_Class' #####

No. Local Variable Type Subtype Init.Val/Calc Description

1  vClass_Vars		Item reference		#NULL
2  vListe_Des_Fens	List
3  vLst_Nom		National	255
4  vLst_Ref		Item reference		#NULL
5  vMsg			National	255	""
6  vName		National	255	""
7  vNbDe_Fen		32 bit integer		0
8  vObj_Build_Class_Ref	Item reference		#NULL
9  vObj_Build_Var_Ref	Item reference		#NULL
10 vSuper		National	255	""
11 vValide		Boolean			kFalse
12 vVars_Def		Item reference		#NULL
13 vVide		Boolean			kTrue

No.	Method text

1	Calculate vName as "fObj_Build"
2	Calculate vSuper as "Aikikan.o_Build"
3
4	Calculate vMsg as con("On change l’ancètre de ",vName)
5	Working message CHANGE SUPER CLASS (Cancel button) {[vMsg]}
6
7	Do $root.$libs.Aikikan.$windows.$makelist($ref.$name,$ref.$ref) Returns vListe_Des_Fens
8	Do vListe_Des_Fens.$redefine(vLst_Nom,vLst_Ref)
9	Calculate vNbDe_Fen as vListe_Des_Fens.$linecount
10
11	For vListe_Des_Fens.$line from 1 to vNbDe_Fen step 1
12
13		Do vListe_Des_Fens.$loadcols()
14
15		Calculate vMsg as con("On change l’ancètre de ",vName,kCr,"dans ",vLst_Nom)
16		Redraw working message
17
18		Set reference vVars_Def to vLst_Ref.$cvardefs
19		Do fObj_Null.$ItemRefIsNull(vVars_Def) Returns vVide
20		If (vVide)
21			Jump to start of loop
22		End If
23
24		Set reference vClass_Vars to vLst_Ref.$cvars.$ref
25		Do fObj_Null.$ItemRefIsNull(vClass_Vars) Returns vVide
26		If (vVide)
27			Jump to start of loop
28		End If
29
30		Do vClass_Vars.$findname(vName) Returns vObj_Build_Class_Ref
31		Do fObj_Null.$ItemRefIsNull(vObj_Build_Class_Ref) Returns vVide
32		If (vVide)
33			Jump to start of loop
34		End If
35
36		Do vVars_Def.$findname(vName) Returns vObj_Build_Var_Ref
37		Do fObj_Null.$ItemRefIsValid(vObj_Build_Var_Ref) Returns vValide
38		If (vValide)
39			Do vVars_Def.$add(vName,kObject,vSuper) Returns vObj_Build_Var_Ref
40 	##	Else
41 	##		Do vObj_Build_Var_Ref.$inherited.$assign(kFalse)
42 	##		Do vObj_Build_Var_Ref.$objsubtype.$assign(vSuper)
43		End If
44
45 		Save class [vLst_Nom]
46
47 	End For
48
49 Close working message
50
51 Quit method kTrue
52



In other words :

$cvars do contain the super class variable, but I cannot access it, 

I can access $cvardefs but it does not contain the super class variable.


What am I doing false here ?

Thank you for your help.

Best regards,

Jean-Marc





More information about the omnisdev-en mailing list