AID ActiveX : interfaces des contrôles

Association pour l'Innovation Didactique Centre de Recherche et d'Expérimentation pour l'Enseignement des Mathématiques

Accueil
ActiveX
Installation
Initiation
insertion
EcritMath
scripter
enregistrer
interfaces
tester
ex. guidé
compléments
Exemples
Java

Cette page s'adresse à ceux qui veulent créer des pages html contenant des figures-Geoplan ou des figures-Geospace ou des EcritMath et de la programmation (en Visual Basic ou en JavaScript). Il est conseillé d'examiner d'abord de telles pages pour se faire une idée de ce dont il s'agit (voir les exemples), de lire les pages d'aide sur l'insertion des contrôles GP0, GE0 ou EcritMath dans une page html et enfin de lire la page "Initiation aux méthodes et événements".
On trouvera ici la description détaillée de l'interface complète des contrôles dans leur versions 1.3.3, y compris des propriétés ou méthodes périmées qui ne sont conservées que pour assurer la compatibilité et qu'il ne faut plus utiliser.

Contrôles GP0 et GE0

Les propriétés

Les propriétés ci-dessous sont, sauf exceptions signalées, publiques, c'est à dire qu'elles sont affectables de l'extérieur directement ou par programmation.

Affecter_TexteDeLaFigure : booléen à true (-1) par défaut (voir TexteDeLaFigure ci-dessous).

BackColor : couleur de fond de la fenêtre du contrôle. On peut modifier la valeur de ce paramètre en ouvrant la fenêtre des propriétés du contrôle (par un double click sur la figure), en choisissant l'onglet Paramètres, puis double click sur la ligne BackColor. Par exemple: la valeur 16776960 (FFFF00 en hexadécimal) placée dans la ligne Données donnera un fond bleu clair à la fenêtre du contrôle (valeur par défaut: 16777215 (FFFFFF) c'est à dire blanc). Cf. la page CouleursPures.
Si la couleur du fond de la figure est précisée, c'est elle qu'on verra, sinon le fond sera de la couleur BackColor.

Initialisation : chaîne de caractères qui actuellement est utilisable de deux manières :
-Pour insérer une image de fond sous la forme "Image=..." où les points sont remplacés par un nom de fichier (avec le chemin complet) accessible sur un disque local ou de réseau local ; les fichiers reconnus sont de type BitMap (extension .bmp), JPEG (extension .jpg) ou Windows metafile (extension .wmf).
-Pour rendre une figure passive, c'est-à dire en faire une vignette en ne gardant que le dessin (aucune modification n'est possible, même par programmation) ; ceci se produit quand la chaîne Initialisation contient le mot "Passive". Si on clique sur une figure passive un message approprié apparaît.

TexteDeLaFigure : champ qui contient le texte d'une figure qui sera utilisé à l'initialisation du contrôle (ne pas confondre ce champ et le texte de la figure que l'on peut demander par le menu Edition de la figure). Ce champ est actualisé chaque fois que la figure est désactivée si Affecter_TexteDeLaFigure est à True (le faire actualiser constamment ralentirait trop).
Si on enregistre la page modifiée, par exemple en appuyant sur un bouton (cf. la page d'explication sur l'enregistrement d'une page html) toutes les figures de la page ont été désactivées et leurs champs TexteDeLaFigure actualisés.
Si on ne veut pas que les modifications d'une figure soient enregistrées, il faut que son champ Affecter_TexteDeLaFigure soit mis à false (0). Exemple: une figure de brouillon , un imagiciel, où l'élève peut faire des essais libres que l'on ne veut pas conserver. On peut le mettre à true (-1) par programmation mais, TexteDeLaFigure n'étant actualisé que lorsque la figure est désactivée, il faut aussi activer la figure par programmation (par la méthode Activer).

Propriétés périmées: NomDuFichier et NumeroFigure

Les méthodes publiques
Certaines sont périmées et conservées uniquement pour assurer la compatibilité. La syntaxe est ici celle de Visual Basic ou VB SCRIPT. L'utilisation d'un autre langage demandera les adaptations nécessaires.
La plupart des procédures et fonctions publiques faisaient intervenir (historiquement) le numéro de la figure (paramètre NumeroFig ou NumeroFigure).
La première simplification (sans modification d'interface) a été d'autoriser le programmeur à remplacer ce numéro par 0.
La deuxième a été de doubler les procédures pour faire disparaître l'appel à ce numéro (ainsi que la marque GP ou GE devenue inutile).

Dans la suite, Figure1 désigne une instance de GE0 (ou de GP0, sauf dans certains cas qui seront précisés).

• Activer
Exemple: Figure1.Activer active la figure de Figure1 (cela se manifestera visuellement par l'apparition d'un cadre bleu et permettra d'agir sur la figure par des touches de commandes par exemple).

• AffecteScalaire(ByVal NomScalaire As String, ByVal Valeur As Double)
Sert à affecter de l'extérieur une variable numérique.
Exemple: Figure1.AffecteScalaire "x" , 2 donne à x la valeur 2 dans la figure de Figure1.
Cette méthode remplace AffecteScalaireGE(ByVal NumeroFig As Integer, ByVal NomScalaire As String, ByVal Valeur As Double) qui est périmée.

• CopierDessinAjuste(ByVal LargeurMillimetres As Integer)
Copie le dessin ajusté de la figure dans le presse papier.
Exemple: Figure1.CopierDessinAjuste 120 copie dans le presse papier le dessin de la figure de Figure1 ajusté à une largeur de 120 mm.
Cette méthode remplace CopierDessinAjusteGE(ByVal NumeroFig As Integer, ByVal LargeurMillimetres As Integer) qui est périmée.

• CopierDessin idem sans la taille.

• ExecuteLigne(ByVal Ligne As String)
Permet d'exécuter la ligne Ligne (ligne conforme à la syntaxe de Geospace, cf. la liste des phrases).
Exemple: Figure1.ExecuteLigne "A point libre dans l'espace" crée un point A libre dans la figure de Figure1.
Cette méthode remplace ExecuteLigneGE(ByVal NumeroFigure As Integer, ByVal Ligne As String) qui est périmée.

Pour exécuter plusieurs lignes à la fois, construire une chaîne de caractères contenant toutes les lignes à exécuter séparées par des "retour chariot" codés chr(13) .
Exemples:
Figure1.ExecuteLigne "x réel libre" + chr(13) + " Objet libre x, paramètre: 3"
Figure1.ExecuteLigne "A point de coordonnées (1,1,1) dans le repère Rxyz" _
+ chr(13) + " Objet dessinable A, particularités: non dessiné"
(le _ est imposé par VisualBasic à cause du passage à la ligne)
Si Ligne contient le texte complet d'une figure, alors cette méthode exécute ce texte en recréant la figure.

Il existe une phrase spéciale (à utiliser avec précaution) qui permet d'ouvrir une boîte de dialogue:
ExecuteLigne "Dialog:2-1-1-1" ouvre la boîte de création des points libres (points libres dans le plan pour une figure du plan, point libre dans l'espace pour une figure de l'espace).
Le code 2-1-1-1 correspond au numéro de l'option de menu de création des points libres dans le plan (ou d'un point libre dans l'espace).
On peut trouver les codes des menus dans l'aide ou en ouvrant la boîte de sélection de l'article Modifier les menus du menu Divers ou encore dans les pages numeros_options_de_menu_plan.html ou numeros_options_de_menu_espace.html.

Vous pouvez essayer la méthode ExecuteLigne en cliquant sur: Essais libres sur la méthode ExecuteLigne

• ExecuteLigneSansDessiner(ByVal Ligne As String)
Cette méthode remplace ExecuteLigneSansDessineGE(ByVal NumeroFigure As Integer, ByVal Ligne As String) qui est périmée.

• ChangeLangue(ByVal NomLangue As String)
permet de changer la langue utilisée par les figures. La variable NomLangue est le code international de la langue à utiliser, sur deux lettres:
Fr pour français, En pour anglais, De pour allemand.
Exemple : Figure1.ChangeLangue "En" commute en Anglais.

Dans une page html, sous IE, toutes les figures ont la même langue (si on commute l'une, toutes commutent).
Suivant les version d'IE, plusieurs pages ouvertes simultanément peuvent avoir des langues différentes (ex. IE 5.0) ou non (ex. IE 5.5).
Attention: les scripts de la page html ne sont évidemment pas traduits. ExecuteLigne "A point libre" ne sera pas comprise par une figure en Anglais.

• Function EnregistreHtmlSous(ByVal Texte As String) As String
ouvre la fenêtre "Enregistrer sous" et renvoie le nom (avec le chemin) sous lequel on enregistre.
Exemple: Si TexteDeLaPage est une variable qui contient le texte html de la page, NomFichier = Figure1.EnregistreHtmlSous(TexteDeLaPage) déclenche le dialogue d'enregistrement et renvoie le nom choisi par l'utilisateur pour cet enregistrement (vide en cas d'annulation). Voir l'aide sur l'enregistrement.

• FunctionInfoEtBoutons(ByVal TexteAAfficher As String, ByVal Titre As String, ByVal Boutons As String) As Integer
permet d'afficher dans une fenêtre modale par rapport à l'application en cours (on ne peut qu'appuyer sur un des boutons de cette fenêtre pour continuer) un message et des boutons. Le message (dans TexteAAfficher) peut contenir du texte mathématique (mettre les expressions à dessiner entre antislash) et peut avoir plusieurs lignes séparées par des chr(13). Titre contient le titre de la fenêtre (une seule ligne) et Boutons contient la liste des intitulés des boutons, séparés par des virgules (par exemple "Oui,Non" ou encore "1,2,Plus,Annuler") et des indications pour la position de la fenêtre. La fenêtre s'affiche au centre de l'écran sauf si la chaîne Boutons contient les expressions : "à gauche" ou "à droite" ou "en bas" ou "en haut".
Cette fonction renvoie le numéro du bouton sur lequel l'utilisateur a cliqué (par exemple, si la chaîne Boutons est "Oui,Non,Annuler" et si on a cliqué sur le bouton annuler, le résultat sera 3).
Exemple: Choix=Figure1.InfoEtBoutons("Exact. Voulez-vous recommencer?","Analyse de la réponse","Oui,Non,Annuler,en haut,à gauche").

• Function LitFichierTexte As String ouvre la boîte de chargement et renvoie le contenu d'un fichier texte (.g2w, .g3w ou autre).
Exemple: Texte = Figure1.LitFichierTexte

• Function NomDernierLibreBouge As String
double Function NomDernierLibreBougeGE(ByVal NumeroFig As Integer) As String
renvoie le nom du dernier objet libre qui a changé ou sur lequel l'utilisateur a cliqué (voir aussi l'événement EventMobileBougeGE, ci-dessous).
Exemple: Nom=Figure1.NomDernierLibreBouge

• FunctionNomDeFichierParOpenDialog(ByVal RepertoireInitial As String, ByVal Filtre As String) As String
Ouvre une boîte de dialogue permettant de choisir un nom de fichier (utile par exemple dans un script qui doit charger une figure). Renvoie le nom du fichier sélectionné (ou la chaîne vide si annulation).
Exemple: NomDeFichierChois=Figure1.NomDeFichierParOpenDialog("D:\poub", "fichiers bmp (*.bmp)|*.bmp") ouvre la boîte de dialogue sur le répertoire D:\poub et y affiche les noms des fichiers bitmaps.

• Function NomLibreActif As String
si rien ne bouge, renvoie le nom de l'objet libre sélectionné pour pilotage au clavier (une chaîne vide si aucun objet n'a été sélectionné) et si un objet bouge, renvoie l'objet en train de bouger.
Exemple: Nom=Figure1.NomLibreActif
Cette fonction remplace Function NomLibreActifGE(ByVal NumeroFig As Integer) As String qui est périmée.

• Function ObjetValide(ByVal NomObjet As String) As Byte
renvoie 1 si l'objet est valide ou n'existe pas, 0 sinon.
Exemple: TestMValide = Figure1.ObjetValide("M").
Cette fonction remplace Function ObjetValideGE(ByVal NumeroFig As Integer, ByVal NomObjet As String) As Byte qui est périmée.

• Function TestParTexte(ByVal Texte As String) As Integer
permet d'effectuer des tests d'existence, d'égalité, d'appartenance... entre objets de la figure.
Exemple: Test = Figure1.TestParTexte("Teste égalité de A et M").
Voir la page d'aide consacrée aux tests.
Cette fonction remplace Function TestParTexteGE(ByVal NumeroFig As Integer, ByVal Texte As String) As Integer qui est périmée.

• Function TexteFigure As String.
permet de récupérer le texte d'une figure.
Exemple: Texte = Figure1.TexteFigure.
Cette fonction remplace Function TexteFigureGE(ByVal NumeroFig As Integer) As String qui est périmée.

• Function ValeurScalaireDouble(ByVal NomScalaire As String) As Double
renvoie la valeur actuelle d'une variable numérique (il peut être nécessaire de tester l'existence de cette variable avant de demander sa valeur car si elle n'existe pas la valeur obtenue est non significative).
Exemple: Valy = Figure1.ValeurScalaireDouble("y").
Cette fonction remplace Function ValeurScalaireDoubleGE(ByVal NumeroFig As Integer, ByVal NomScalaire As String) As Double qui est périmée.

• RedessineBrutal
rafraîchit la figure.
Cette fonction remplace RedessineBrutalGE(ByVal NumeroFig As Integer) qui est périmée.

• Function FournitTexte(ByVal TexteDeDemande As String) As String (à partir de la version 1.3)
renvoie, sous forme de texte, ce qui est demandé par la phrase TexteDeDemande qui peut être:
"Texte de la figure"
"Phrase de création de #1" (où #1 est le nom d'un objet créé)
"Phrases de création au-delà de #1"
"Phrase de rappel de #1" (où #1 est le nom d'un objet créé)
"Phrases de rappel au-delà de #1"
"Nom du dernier objet libre bougé"
"Nom de l'objet pilotable au clavier"
"Ecriture simplifiée de l'ensemble #1"
"Condition pour que #1 appartienne à #2"
Les trois premières phrases permettent d'obtenir un texte que l'on peut faire exécuter par un ExecuteLigne dans une autre figure. Exemple:
Figure1bis.Executeligne Figure1.FournitTexte("Phrase de création de u")
Les phrases de rappel ne diffèrent des phrases de création que par le fait que si on les place dans un EcritMath (par exemple) elles seront écrites comme dans les rappels, les expressions étant dessinées.
E=Figure1.FournitTexte("Ecriture simplifiée de l'ensemble [2,6]U[-2,4]")donnera (sous forme de texte) un ensemble E égal à [-2,6] (cf. la page d'aide sur les ensembles).
P=Figure1.FournitTexte("Condition pour que #1 appartienne à #2") où #2 est une expression ensembliste (ensemble de réels uniquement) donnera une relation P vraie si #1 est un élément de #2 et fausse sinon. On pourra, par exemple, utiliser cette relation dans une fonction µ pour représenter un ensemble de solutions donné par l'élève.
Exemples: P=Figure1.FournitTexte("Condition pour que x appartienne à [2,6]") donnera (sous forme de texte) une proposition P égaleà"2<=x<=6".
Si la phrase n'est pas comprise (#2 n'est pas un ensemble de réels ou écriture incorrecte, par exemple), le texte renvoyé est ???.
Si #1 est toujours un élément de #2 le texte renvoyé est 1>0 ou une autre proposition toujours vraie.
Si #1 n'est jamais un élément de #2 le texte renvoyé est une proposition toujours fausse, éventuellement -1>0. Exemples:
Figure1.FournitTexte("Condition pour que 4 appartienne à R") donne "1>0"
Figure1.FournitTexte("Condition pour que 0 appartienne à {3}") donne "0=3"
Il ne faut pas utiliser de variables dans les expressions ensemblistes. Les variables ne sont pas refusées mais elles ne sont pas gérées et le résultat n'est pas significatif. En particulier, les variables de la figure dont on utilise les méthodes ne sont pas connues par les procédures qui gèrent les ensembles.

Essais libres sur la fonction FournitTexte

Les événements

• EventMobileBougeGE (ByVal Numero As Integer)
déclenché quand on bouge une variable libre de la figure. Pour récupérer cet événement il suffit de créer la procédure EventMobileBougeGE qui sera lancée automatiquement par cet événement.
L'entier Numero renvoyé indique par quel procédé la variable libre a été bougée :

0 pour mouvement à la souris
1 pour mouvement au clavier
2 pour mouvement par commande d'affectations directes
3 pour mouvement par commande d'affectations mémorisées
4 pour mouvement par commande d'affectations aléatoires
5 pour mouvement par le temps (time)
6 pour mouvement par affectation par le menu pour une variable numérique
7 pour une affectation par le menu pour point sur point
8 pour mouvement par affectation par le menu pour point par coordonnées
16 pour un simple click sur un point libre
Le nom de l'objet libre bougé est renvoyé par la fonction NomDernierLibreBouge décrite ci-dessus
Exemple: Sub Figure1_EventMobileBougeGE(code)
if code=16 then MsgBox "Cliqué" else MsgBox "Bougé"
end sub
L'événement correspondant de GP0 se nomme naturellement EventMobileBougeGP(ByVal Numero As Integer).

• EventFigureModifiee
déclenché quand la figure (Geoplan ou Geospace) subit une modification (nouvelle création, objets renommés etc).Tout ce qui concerne seulement le dessin.(changement de style, de valeur pour une variable libre etc.) n'est pas concerné.
Exemple: Sub Figure1_EventFigureModifiee()
MsgBox "Figure modifiée"
end sub

Remarques importantes
1°- Pour assurer la compatibilité entre les anciennes versions diffusées (1.0.3 de juin 2000) et la nouvelle, le principe est de ne jamais retirer d'élément public de l'interface. C'est pour cette raison qu'il reste deux méthodes obsolètes: NomDansInitialisation (qui avait été rendue publique par erreur) et ChangeCouleurFondGP (qui est remplacée par l'affectation de BackColor). NE PAS APPELER CES METHODES OBSOLETES: elles ne fonctionnent pas.
2°- De nombreuses méthodes (celles dont le nom se terminait par "GE") ont été renommées pour simplifier la programmation. Pour assurer la compatibilité, les anciennes demeurent, mais il est recommandé d'éviter désormais de les utiliser.

EcritMath

Un mode d’emploi est disponible. Il est indispensable de le consulter pour tout ce qui concerne la syntaxe des expressions.

Les propriétés

AntiSlashParDLL : booléen (voir ci-dessous) ; false (0) par défaut.

ExpressionModifiable : booléen (voir ci-dessous) ; false (0) par défaut.

Si Expression modifiable est à true (-1), en double cliquant sur le dessin du contrôle on ouvre un éditeur d’expression : si antiSlashParDLL est à true, l’éditeur est monoligne (il est inutile de mettre les antislashs si le texte n’est qu’une seule expression) et sinon il est multiligne et les expressions doivent toutes être mises entre antislashs.

BackColor : couleur de fond de la fenêtre du contrôle.

Couleur : couleur du texte.

Expression : le texte comprenant les expressions à dessiner entre antislashs (si antiSlashParDLL est à false).

IndicTaille : taille et inclinaison et graisse des caractères (cf tableau du mode d’emploi).

TailleAuto : booléen qui concerne uniquement la taille de la fenêtre du contrôle ; s’il est à true, la taille s’adapte tant bien que mal au contenu, s’il est à false, on peut l’ajuster à la main mais la taille est fixe.

Les méthodes publiques

Function OkSyntax() as boolean : est à true si la syntaxe de l’expression est correcte.

Les événements

• Event ExpressionModifiee
déclenché quand l'expression est changée. Pour récupérer cet événement il suffit de créer la procédure EventExpressionModifiee qui sera lancée automatiquement par cet événement.
Exemple: Sub EcritMath1_EventExpressionModifiee
MsgBox EcritMath1.Expression 'Affiche la nouvelle expression
end sub