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
|