version 2004.5 (Modifiée)
WR LIRE COORDONNEES CURSEUR (zone; posHoriz; posVert; hauteur)
| Paramètre | Type | Description | |
| zone | Entier long | 4D Write area | |
| posHoriz | Numérique | Coordonnée horizontale dans la page | |
| posVert | Numérique | Coordonnée verticale dans la page | |
| hauteur | Numérique | Hauteur du curseur |
Description
La commande WR LIRE COORDONNEES CURSEUR retourne les coordonnées du curseur par rapport à l'angle supérieur gauche de la page. Les valeurs sont exprimées dans l'unité courante définie dans les préférences du document.
Lorsque la commande est exécutée alors que du texte ou une image est sélectionné(e) dans la zone 4D, deux cas peuvent se produire:
Si la sélection a été créée par programmation, on considère que le curseur est situé à la fin de la sélection.
Si la sélection est issue d'une action de l'utilisateur, on considère que le curseur est situé à l'emplacement où le bouton de la souris a été relâché. Par exemple, si l'utilisateur a sélectionné manuellement un paragraphe en partant de la dernière ligne et en remontant vers la première, le curseur sera placé au début de la sélection.
Le paramètre hauteur retourne la hauteur du curseur, c'est-à-dire la taille du caractère situé à sa droite. Si une image est sélectionnée, la hauteur de l'image est retournée.
Exemple
Depuis la version 2004.5 de 4D, la commande Imprimer ligne permet d'imprimer des zones 4D Write. En principe, ces zones sont imprimées en hauteur fixe. L'exemple suivant montre comment utiliser les commandes d'impression de 4D et la commande WR LIRE COORDONNEES CURSEUR pour faire varier la hauteur d'impression de la zone 4D Write en fonction de son contenu.
Voici la méthode du formulaire appelé par la commande Imprimer ligne :
Si (Evenement formulaire=Sur impression corps ) LIRE RECT OBJET(zone4Dwrite;$gauche;$haut;$droit;$bas) $postaquet:=Lire taquet impression(Corps formulaire ) $hauteurzone:=$bas-$haut ` hauteur de la zone 4D Write $nouvhauteur:=calcultaille ` calcultaille retourne la hauteur de la zone 4D Write en fonction de son contenu ` cette méthode est présentée ci-dessous $décalage:=$nouvhauteur-$hauteurzone DEPLACER OBJET(zone4Dwrite;0;0;0;$décalage) ` on redimensionne la zone 4D Write FIXER TAQUET IMPRESSION(Corps formulaire;$postaquet+$décalage) ` on déplace le taquet Fin de si
La méthode calcultaille est la suivante :
$zone:=WR Hors ecran WR BLOB VERS ZONE ($zone;[Table 1]Write_) WR FIXER PROPRIETE DOCUMENT ($zone;wr unité ;wr pixels) ` On travaille en pixels WR FIXER SELECTION ($zone;1;1) ` Début du texte WR LIRE COORDONNEES CURSEUR ($zone;$hor;$debutver;$curseur1) WR FIXER SELECTION ($zone;1000000;1000000) ` Fin du texte WR LIRE COORDONNEES CURSEUR ($zone;$hor;$ver;$curseur2) WR DETRUIRE HORS ECRAN ($zone) $0:=Troncature(($ver-$debutver+$curseur1+$curseur2)*0,75;0)
Référence