Callocx permet d'utiliser des OBJets COM (OLE, ActiveX,...).
Callocx retour="" with liste_param
Elément | Description | Restrictions |
retour | retour d'information sous forme d'un tableau de chaînes de caractères | |
liste_param | Liste de id_param séparés par le caractère ','. | Les expressions doivent être alphanumériques et sont limitées à 255. |
############################################################
#--- Création de l'OBJet graphique
Local Char RETOUR(20)
Callocx RETOUR="" With
& "X3Action=" +chr$(1)+ "1",
& "X3Identification=" +chr$(1)+ "VtChartLib.VtChart",
& "X3Window=" +chr$(1)+ "0",
& "X3Left=" +chr$(1)+ "1",
& "X3Top=" +chr$(1)+ "1",
& "X3Right=" +chr$(1)+ "340",
& "X3Bottom=" +chr$(1)+ "200",
& "X3GetFile=" +chr$(1)+ filpath("GRAPH","Chart_line_1","vtc"),
& "Repaint=" +chr$(1)+ '10"%d"' + "0"
#--- Récupération du numéro d'identification de l'OBJet
If (left$(RETOUR,9) = "X3Number=") Then
GOCXID = mid$(RETOUR,11,1)
Endif############################################################
#--- Modification de l'OBJet avec
# - titre et texte de pied
# - nombre de colonnes et lignes
# - nombre de labels de colonnes et de lignes
Local Char WCLI(255)
WCLI = "$ADXDIR\Report\GX3APP_gailf50_1801\Chart_line_1.vtc"
Callocx "" With
& "X3Action=" +chr$(1)+ "2",
& "X3Number=" +chr$(1)+ GOCXID,
& "ReadFromFile=" +chr$(1)+ '30"%z"' + WCLI,
& "FootnoteText=" +chr$(1)+ '10"%s"' + "pied de graphe",
& "TitleText=" +chr$(1)+ '10"%s"' + "titre graphe",
& "ColumnCount=" +chr$(1)+ '10"%d"' + "1",
& "RowCount=" +chr$(1)+ '10"%d"' + "6",
& "ColumnLabelCount=" +chr$(1)+ '10"%d"' + "1",
& "RowLabelCount=" +chr$(1)+ '10"%d"' + "6"
############################################################
#--- Chargement des données
Local Decimal WDAT(6)
WDAT(0)=20
WDAT(1)=40
WDAT(2)=65
WDAT(3)=15
WDAT(4)=10
WDAT(5)=10
For WROW = 1 To 6
Callocx "" With
& "X3Action=" +chr$(1)+ "2",
& "X3Number=" +chr$(1)+ GOCXID,
& "Column=" +chr$(1)+ '10"%d"' + "1",
& "Row=" +chr$(1)+ '10"%d"' + num$(WROW),
& "Data=" +chr$(1)+ '10".s"' + num$(WDAT(WROW-1))
Next WROW
############################################################
# Chargement labels abscisse
For WROW = 1 To 6
Callocx "" With
& "X3Action=" +chr$(1)+ "2",
& "X3Number=" +chr$(1)+ GOCXID,
& "RowLabelIndex=" +chr$(1)+ '10"%d"' + "1",
& "Row=" +chr$(1)+ '10"%d"' + num$(WROW),
& "RowLabel=" +chr$(1)+ '10"%s"' + month$(WROW)
Next WROW
############################################################
# On repaint l'OCX et on active la fenetre
Callocx "" With
& "X3Action=" +chr$(1)+ "2",
& "X3Number=" +chr$(1)+ GOCXID,
& "X3Activation=" +chr$(1)+ "1",
& "Repaint=" +chr$(1)+ '10"%d"' + "1"
End
L'instruction Callocx permet d'utiliser des OBJets COM (OLE, ActiveX,...).afin de présenter des résultats sous forme graphique, par exemple.
Pour les graphes, une structure standard du graphique doit être préalablement générée en Visual Basic sur PC. Elle est ensuite stockée sur le serveur dans le répertoire GRAPH du dossier et a pour extension *.vtc. A l'utilisation, elle est transférée et stockée sur le client dans le répertoire x3\report\dossier_serveur_port. Si cette structure est présente sur le poste client, il n'y a pas de transfert à partir du serveur.
Cette structure définit la présentation initiale, comme :
Cette présentation initiale est modifiable à l'exécution au niveau du poste client. Les données modifiables sont :
Il existe des paramètres standards (qui commencent par X3 ) et des paramètres propres à l'OCX.
Les paramètres sont passés sous la forme :
Paramètre = Indice + Valeur
Valeur doit être alphanumérique et limitée à 255. Valeur est précédé d'un indice sur un caractère qui permet de regrouper l'ensemble des valeurs pour un paramètre donné et donc de dépasser la limite des 255 caractères pour ce paramètre.
Les paramètres standards à renseigner pour l'appel de l'Ocx sont les suivants :
Paramètre | Description | Valeur |
X3Action | Exécute une action pour l'OBJet | "1" : Création |
X3Number | Identifie un OBJet. | sur 1 caractère. |
X3Evenement | Permet de gérer ou non les évènements depuis l'OBJet COM | "0" ou "1" |
X3Message | Les évènements que l'on souhaite recevoir. | Numéro de l'évènement |
X3Identification | Identifie l'OBJet que l'on veut créer | chaîne caractères |
X3Window | Numéro de la fenêtre sur laquelle on attache l'OBJet. | "0" |
X3Left | Position Gauche de l'OBJet en quart de colonne | position numérique |
X3Top | Position Haut de l'OBJet en huitième de ligne | position numérique |
X3Right | Position Droite de l'OBJet en quart de colonne | position numérique |
X3Bottom | Position Bas de l'OBJet en huitième de ligne | position numérique |
X3Activation | Active ou désactive la fenêtre supportant l'Ocx. Pour les traitements longs, il est nécessaire de désactiver la fenêtre pour éviter tout problème avec les manipulations de l'opérateur. | "0" : désactivation |
X3GetFile | Chemin d'accès et nom du fichier *.vtc sur le serveur |
Chaque Ocx aura ses propres propriétés et méthodes. Les paramètres sont passés sous la forme :
Paramètre = Indice + Zone de format + Valeur
Indice : correspond à la continuation d'une valeur d'un même paramètre ( identique aux paramètres standards).
Zone de format : est composé du Type de fonction demandé, d'un Sous-type (non utilisé dans cette version) et entre guillemets le Format qui doit préciser le type de la donnée transmise et le caractère de séparation entre deux données.
Type de fonction :
1 : indique une propriété entrante (PUT)
2 : indique une propriété sortante (GET)
3 : indique une méthodeSous-type :
0 : seule valeur permise pour cette version
Format :
"%d" : indique une zone numérique passée par valeur à l'OBJet
"%s" : indique une zone alphanumérique passée par valeur à l'OBJet
"%z" : indique une zone avec constante. Seule la constante ADXDIR est gérée dans cette version.
".s" : indique une zone numérique à passer en alphanumérique à l'OBJet, et sur lequel il faut faire les transformations
locales (caractère séparateur décimal)Séparateur :
1er exemple, "%d;%s" indique que la chaîne qui suit est composée d'une zone numérique et d'une chaîne alphanumérique que l'on trouvera après le point virgule.
2ème exemple, "%d;%s,%d" 123; test avec des chiffres 4563.23 ,45
donnera la valeur pour le 1er paramètre : 123
pour le 2ème : test avec des chiffres 4563.23
pour le 3ème : 45indique que la chaîne qui suit est composée d'une zone numérique et d'une chaîne alphanumérique que l'on trouvera après le point virgule.
# Par exemple, pour l'OCX de gestion des graphes (First impression 5), on aura : Callocx RETOUR ="" With
& "X3Action="+chr$(1)+"2",
& "X3Number="+chr$(1)+GOCXID,
& "ReadFromFile="+chr$(1)+'30"%s"' + "c:\trf\test.vtc",
& "ColumnCount="+chr$(1)+'10"%d"' + "4",
& "RowCount="+chr$(1)+'10"%d"' + "5",
& "TitletextColumnCount="+chr$(1)+'10"%s"' + "C'est le titre du graphe",
& "MenuItemVisible="+chr$(1)+'10"%d,%d"' + "0,0"
# ReadFromFile est une méthode avec un paramètre de type chaîne.
# ColumnCount est une propriété entrante avec un paramètre numérique.
# RowCount est une propriété entrante avec un paramètre numérique.
# TitletextColumnCount est une propriété entrante avec un paramètre de type chaîne
# MenuItemVisible est une propriété entrante avec deux paramètres numériques
# séparés par une virgule.Vous trouverez les informations concernant ces paramètres dans OLE Object Viewer de visual Studio de Microsoft, par exemple.
990="format""valeurs"
Le format :
C'est une chaîne composée de :
La valeurs :
Elles sont décomposées selon le format.
Exemple :
#XF"la chaine" : c'est une chaine de 35 caractères alphanumériquesdont la valeur est "la chaine".
Un ordre 5 ne peut renvoyer qu'une valeur.
Une propriété ne peut être accédée qu'une fois dans un message.
Il est nécessaire d'utiliser X3Activation pour gérer les tunnels depuis un OBJet.
Les évènements peuvent être négatifs.
Prérequis :Outre les interfaces standards, les OBJets appelés par l'instruction Callocx doivent impérativement implémenter les interfaces suivantes :