Tivoli Service Desk 6.0 Developer's Toolkit - Manuel de référence du langage TSD Script
Retour à la page principale
Remarque : Toutes les fonctions Win ont le même code retour. Ce tableau de codes apparaît dans la fonction WinAboutBox et chaque fonction Win est dotée d'un lien permettant d'y accéder.
Retour à la page principale
Remarque : Il s'agit de la première partie des fonctions de gestion des fenêtres. Cette partie
se termine au niveau de la fonction WinSetColor,
et la seconde partie commence à WinSetFont.
Renvoie un descripteur à la fenêtre du bureau. Cette valeur est permanente pendant la session en cours. Elle n'est cependant pas stockée de façon permanente. Lors de l'exécution suivante du programme, cette constante prend une nouvelle valeur.
FUNCTION $Desktop: WINDOW;
Avertissement : Sous OS/2, vous pouvez envoyer des messages valides au bureau pour mettre le traitement en mode pause. Par exemple, si vous envoyez le message $MsgClose au bureau, l'exécution du programme se met en pause. Ce comportement est contrôlé par le système d'exploitation.
$Desktop est une constante système prédéfinie qui contient le descripteur du bureau OS/2 ou du bureau Windows. Elle est souvent indiquée en tant que parent dans les instructions relatives aux fenêtres et aux boîtes de dialogue.
KNOWLEDGEBASE Desktop;
ROUTINES PROCEDURE Example;
PRIVATE ROUTINES
(* Create a scroll window parented by the desktop with default event processing *) PROCEDURE Example IS VARIABLES whdl: WINDOW;
ACTIONS WinCreateScrollWindow($Desktop, (*Window is a child of OS/2 desktop *) whdl, (* return handle of new window *) $NullHandler, (* Default event processing *) 5, 5, 80, 20, (* Window location and size *) 'Example', (* Window title *) '', (* Use default font *) 0, (* Point size is ignored for default *) BitOr($WinTitle, $WinBorder, $WinSysMenu )); WinWait( whdl ); END;
Indique la touche enfoncée par l'utilisateur lorsqu'un événement $MsgChar se produit.
TSD Script définit plusieurs constantes pour les touches spéciales telles que les touches de commande du curseur, les touches de modification (c'est-à-dire les touches utilisées en combinaison avec d'autres touches, comme Ctrl ou Alt), etc.
Remarque : Pour plus d'informations, reportez-vous à la rubrique Constantes de TSD Script.
EVENT MyEvent IS ACTIONS WHEN $Event IS $MsgChar THEN WHEN $KeyCode IS $KeyUpArrow THEN MoveUp; ELSWHEN $KeyDownArrow THEN MoveDown; ELSWHEN $KeyLeftArrow THEN MoveLeft; ELSWHEN $KeyRightArrow THEN MoveRight; END; END;
Cette fonction affiche une fenêtre par défaut "A propos de" relative à une application.
FUNCTION WinAboutBox( VAL Icon : STRING, VAL AppName : STRING, VAL Version : STRING ) : INTEGER;
Les informations affichées contiennent un message de copyright de Tivoli Service Desk et ne sont pas destinées à d'autres applications.
Nom de l'argument | Description |
Icon | Nom du fichier .bmp associé devant s'afficher avec l'application. Si le fichier est introuvable ou que son nom n'est pas valide, la fenêtre n'affiche pas de graphique. Les fichiers indiqués par cette commande sont recherchés dans les variables d'environnement SAIPATH et PATH. |
AppName | Nom de l'application. |
Version | Numéro de version de l'application. |
KNOWLEDGEBASE aboutbox;
CONSTANTS
AppName IS 'Pink Elephant Word Processor'; AppVersion IS 'Version 3.1';
ROUTINES
Procedure DisplayAboutBox;
PRIVATE ROUTINES
Procedure DisplayAboutBox IS
VARIABLES ACTIONS WinAboutBox('pink.bmp', AppName, AppVersion); END;
Code retour | Description |
1 | Opération ayant abouti. |
0 | Abandon de l'utilisateur. L'utilisateur a fermé la fenêtre ou a abandonné l'opération. Cette opération s'effectue généralement lorsque l'utilisateur appuie sur la touche Echap, clique sur le bouton Annuler ou ferme la fenêtre à partir du menu système. |
-1 | Le descripteur de fenêtre ne fait pas référence à une fenêtre valide. La fenêtre n'existe peut-être plus ou ne prend pas en charge la commande. |
-2 | Valeur inconnue. |
-3 | La mémoire est insuffisante. |
-4 | Aucune création. Le système d'exploitation n'a pas pu créer l'objet demandé. Un descripteur de fenêtre parent fait peut-être référence à une fenêtre qui n'existe plus. |
-7 | Le contrôle nommé d'une boîte de dialogue est introuvable dans la boîte de dialogue à laquelle le descripteur de fenêtre fait référence. |
-8 | La commande de boîte de dialogue demandée ne peut pas être exécutée sur le type de contrôle nommé. |
-10 | Un appel a échoué au niveau du système d'exploitation. Cela peut être dû à une configuration incorrecte ou à une inadéquation des ressources. |
-12 | L'instruction SendMessage ou PostMessage a été appelée par un message qui n'est pas pris en charge par les instructions NETx. Le message doit être l'un des messages $MsgNetx pris en charge ou un message $MsgUser + n défini par l'utilisateur spécifiquement en vue d'une utilisation avec les instructions NETx. |
Efface la totalité de la surface utile d'une fenêtre ou d'une fenêtre défilante en y appliquant la couleur d'arrière-plan.
FUNCTION WinClear(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre à effacer. Ce descripteur peut faire référence à une fenêtre standard ou à une fenêtre défilante. |
La couleur d'arrière-plan courante peut être changée à l'aide de la fonction WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); WinWrite($Handle,'Black');
Efface le contenu d'une fenêtre (de la position du curseur jusqu'à la fin de la ligne) en y appliquant la couleur d'arrière-plan en cours.
FUNCTION WinClearEOL(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre à effacer. Ce descripteur peut faire référence à une fenêtre standard ou à une fenêtre défilante. |
WinClearEOL efface le contenu de la fenêtre, de la position du curseur jusqu'à la fin de la ligne en cours. Il ne modifie pas la position du curseur. La surface effacée prend la couleur d'arrière-plan en cours.
Remarque : La couleur d'arrière-plan peut être changée à l'aide de la fonction WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlue); WinGoToXY($Handle,2,2); WinClearEOL($Handle);
Efface le contenu de la fenêtre (de la position du curseur jusqu'au bas de la fenêtre) en y appliquant la couleur d'arrière-plan en cours.
FUNCTION WinClearEOW(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre à effacer. Ce descripteur peut faire référence à une fenêtre
standard ou à une fenêtre défilante. |
WinClearEOW efface le contenu de la fenêtre indiquée de la position du curseur jusqu'à la fin de la fenêtre. La surface effacée prend la couleur d'arrière-plan en cours. La position du curseur n'est pas modifiée.
Remarque : La couleur d'arrière-plan en cours peut être changée à l'aide de l'instruction WinSetColor.
WHEN $Event IS $MsgPaint THEN WinGoToXY($Handle,5,10); WinSetColor($Handle,$WinWhite,$WinLightBlue); WinClearEOW($Handle);
Efface une surface rectangulaire dans une fenêtre en y appliquant la couleur d'arrière-plan en cours.
FUNCTION WinClearRectangle(VAL whdl: WINDOW, VAL xLoc, yLoc, width, height: INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre à effacer. Ce descripteur peut faire référence à une fenêtre standard ou à une fenêtre défilante. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la surface à effacer. Les abscisses sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la surface à effacer. Les ordonnées sont exprimées en cellules de caractère. |
width | Largeur de la surface à effacer. La largeur est exprimée en cellules de caractère. |
height | Hauteur de la surface à effacer. La hauteur est exprimée en cellules de caractère. |
WinClearRectangle efface une surface rectangulaire spécifique dans une fenêtre donnée. La surface effacée prend la couleur d'arrière-plan en cours. Le curseur n'est pas déplacé.
Remarque : La couleur d'arrière-plan en cours peut être changée à l'aide de l'instruction WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClearRectangle($Handle,5,10,40,8); END:
Ferme une boîte de dialogue ou une fenêtre.
FUNCTION WinCloseWindow(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la boîte de dialogue ou de la fenêtre à fermer. |
Cette fonction est également mise en oeuvre en tant que message pouvant être transmis à une boîte de dialogue ou à une fenêtre ($MsgClose).
KNOWLEDGEBASE close;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Window will close shortly...', $WinDefaultStyle); SysDelay(1000); WinCloseWindow(Handle); END;
Crée une fenêtre standard ou générique.
FUNCTION WinCreate(VAL parent: WINDOW, REF whdl: WINDOW, VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, style: INTEGER): INTEGER;
Si la fonction d'événement ne traite pas le message de mise en couleur et efface la fenêtre, cette dernière conserve une image correspondant à son aspect au moment de sa création.
WinCreate ne renvoie pas de valeur tant que $MsgCreate n'est pas traité. La valeur du descripteur de fenêtre renvoyé n'est donc pas définie tant que $MsgCreate n'est pas traité. Cependant, $Handle peut toujours être utilisé lors du traitement de WinCreate.
Nom de l'argument | Description |
parent | Parent de la fenêtre à créer. |
whdl | Le descripteur de la fenêtre nouvellement créée est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
EventHandler | Gestionnaire d'événements chargé de traiter les événements générés par la fenêtre ou la boîte de dialogue. Si aucun traitement d'événement n'est requis, le mot clé $NullHandler peut être utilisé. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. Les abscisses sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. Les ordonnées sont exprimées en cellules de caractère. |
width | Largeur (dimension x) de la fenêtre, bordure non comprise. |
height | Hauteur (dimension y) de la fenêtre, bordure, barre de titre, barre de menus, barre d'outils et barre d'état non comprises. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. Utilisez un style contenant la valeur $WinTitle. |
style | Masque de contrôle des données entières représentant un ensemble d'indicateurs de
style permettant de contrôler l'aspect de la fenêtre. Pour obtenir une liste des indicateurs de style disponibles, reportez-vous à Styles de fenêtre. |
Premiers messages reçus
Lorsqu'une fenêtre est créée, les messages ci-après sont reçus dans l'ordre indiqué.
Personnalisation d'une fenêtre à l'aide de styles
WinCreate permet de créer des fenêtres standard ou génériques. De telles fenêtres peuvent contenir des barres de menus, des barres d'outils et des barres d'état, ainsi que d'autres éléments.
L'aspect et le comportement exacts de la fenêtre créée à l'aide de la fonction WinCreate sont en grande partie déterminés par l'argument style. Cet argument de type entier est un masque de contrôle de données composé de divers indicateurs (répertoriés dans la section ci-après). Il est généralement utilisé en combinaison avec l'opérateur BITOR (par exemple, BITOR($WinBorder, $WinTitle)). Cette méthode doit être maniée avec précaution car elle peut entraîner des effets indésirables si le même indicateur est ajouté deux fois.
Remarque : Pour plus d'informations, reportez-vous à la rubrique Styles de fenêtre.
Création d'un gestionnaire d'événements pour une fenêtre
L'association d'un gestionnaire d'événements à une fenêtre s'effectue généralement via la fonction WinCreate. Un gestionnaire d'événements est une routine qui traite certains messages envoyés à la fenêtre. Par exemple, si la fenêtre est dotée d'une barre d'icônes, son gestionnaire d'événements reçoit les messages (événements) $MsgMenu à chaque fois que l'utilisateur clique sur l'une des icônes. Le premier paramètre d'événement (entier) contient un nombre compris entre un (1) et le nombre d'icônes, indiquant l'icône sélectionnée. Le gestionnaire d'événements peut ensuite appeler une routine particulière.
Remarque : Les divers messages pouvant être reçus par les fenêtres créées à l'aide de la fonction WinCreate sont décrits et expliqués dans la rubrique Messages TSD Script.
EVENT MainEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetIconBar($Handle,{'FILE.ICO', 'REPORT.ICO','HELP.ICO'}: LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $EventParm(1,INTEGER) IS 1 THEN HandleFileIcon; ELSWHEN 2 THEN HandleReportIcon; ELSWHEN 3 THEN HandleHelpIcon; END; END; END;
PROCEDURE MainProgram IS VARIABLES mainWindow: WINDOW; ACTIONS WinCreate($Desktop,mainWindow,MainEvent,0,0,80,20, 'Main Window', BitOr($WinBorder,$WinTitle,$WinResize, $WinSysMenu, $WinIconBar, $WinAutoPos,$WinTaskList)); WinWait(mainWindow); END;
Crée une fenêtre d'horloge ou de minuterie.
FUNCTION WinCreateClock(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL xLoc, yLoc, width, height, style, id: INTEGER): INTEGER;
Nom de l'argument | Description |
whdlParent | Parent de la fenêtre à créer. |
whdl | Le descripteur de la nouvelle fenêtre est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. Les abscisses sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. Les ordonnées sont exprimées en cellules de caractère. |
width | Largeur (dimension x) de la fenêtre, bordure non comprise. La largeur est exprimée en cellules de caractère. |
height | Hauteur (dimension y) de la fenêtre, bordure, barre de titre, barre de menus, barre d'outils et barre d'état non comprises. La hauteur est exprimée en cellules de caractère. |
style | Style de la fenêtre de l'horloge. Les indicateurs de style sont utilisés en
combinaison avec l'opérateur BITOR. Sélectionnez une ou aucune des fonctions suivantes :
Sélectionnez une ou aucune des fonctions suivantes :
Indicateur facultatif : $ClkHidden - L'horloge ne s'affiche pas à l'écran. |
ID | Numéro d'identification utilisé dans les messages de notification envoyés aux fenêtres parent. Vous pouvez créer des minuteries dans des fenêtres génériques à l'aide du message $MsgStartTimer. |
WinCreateClock permet de créer des horloges qui se mettent à jour elles-mêmes en temps réel (à chaque seconde). Par défaut, une horloge commence à afficher l'heure courante en fonction de l'horloge système. Cependant, vous pouvez définir une horloge pour qu'elle affiche une heure courante en lui envoyant le message $MsgClockSet ainsi qu'une valeur horaire.
Par exemple, la ligne ci-après permet de configurer une horloge indiquant le temps écoulé :
SendMessage(clockWindow,$MsgClockSet,{0,0,0}: TIME);
Les fenêtres d'horloge répondent également aux messages $MsgShow. Cela permet de créer une fenêtre d'horloge, de la masquer, de modifier sa valeur horaire et de l'afficher. Soit l'exemple suivant :
WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clockWindow, 1,1,13,2, $Clk24Hour,0); SendMessage(clockWindow,$MsgShow,FALSE); ELSWHEN START_TIMER THEN SendMessage(clockWindow,$MsgClockSet, {0,0,0}: TIME): SendMessage(clockWindow,$MsgShow,TRUE); END;
Cet exemple illustre le traitement d'événement d'une autre fenêtre. Lorsque la fenêtre est créée, elle crée une horloge et la masque. Lorsqu'elle reçoit un message START_TIMER, elle attribue à l'heure de l'horloge la valeur 00:00:00 et affiche l'horloge. L'utilisateur visualise une horloge indiquant le temps écoulé.
VARIABLES clock: WINDOW; ROUTINES EVENT WindowEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clock,1,1,13,2,$ClkBorderIn,1); END; END;
Crée une fenêtre d'afficheur d'interface MDI dotée d'une fonction hypertexte de base. Les barres de menu disponibles dans les menus Fichier, Editer et Fenêtre permettent :
Vous pouvez accéder aux options des menus en incrustation en appuyant sur le bouton droit de la souris dans un afficheur hypermédia. Ces options permettent de sélectionner :
FUNCTION WinCreateHyperViewer(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL EventFunc: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style: INTEGER): INTEGER;
Nom de l'argument | Description |
whdlParent | Parent de la fenêtre à créer. |
whdl | Le descripteur de la fenêtre nouvellement créée est renvoyé dans ce paramètre. En cas d'erreur, l'argument whdl prend la valeur $Unknown. |
fileName | Nom du fichier à afficher. Si le fichier ne se trouve pas dans le répertoire en
cours, il est recherché dans la variable d'environnement SAIPATH. Le fichier peut être un fichier
ASCII ou avoir des liens hypertexte intégrés. Pour plus d'informations, reportez-vous à la section Remarques. |
EventFunc | Gestionnaire d'événements chargé de traiter les événements générés par la fenêtre ou la boîte de dialogue. Si aucun traitement d'événement n'est requis, le mot clé $NullHandler peut être utilisé. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. Les abscisses sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. Les ordonnées sont exprimées en cellules de caractère. |
width | Largeur (dimension x) de la fenêtre, bordure non comprise. La largeur est exprimée en cellules de caractère. |
height | Hauteur (dimension y) de la fenêtre, bordure, barre de titre, barre de menus, barre d'outils et barre d'état non comprises. La hauteur est exprimée en cellules de caractère. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. |
style | Masque de contrôle des données entières représentant une liste d'indicateurs
de style permettant de contrôler l'aspect de la fenêtre. Pour plus d'informations, reportez-vous à la section Remarques relative à cette instruction. |
WinCreateHyperViewer permet de créer un afficheur hypertexte. WinCreateHyperViewer crée une fenêtre avec l'emplacement, la taille et les styles indiqués mais affiche également le contenu du fichier indiqué. Ce fichier doit contenir un texte ASCII comportant des boutons intégrés. Un bouton, qui apparaît pour l'utilisateur sous forme de mot mis en évidence, est un lien permettant d'accéder à un autre objet tel qu'un fichier texte ou son, une image ou un programme.
Un bouton est défini au format suivant :
[[<texte du bouton> | <commande>]]
<texte du bouton> correspond au texte à mettre en évidence et <commande> indique l'action lancée lorsque l'utilisateur clique sur le bouton.
Renvoi à la ligne
Le contrôle hypertexte suppose que le fichier fourni ait le même format qu'un fichier hypermédia Tivoli Systems. Cela signifie qu'il renvoie à la ligne toutes les lignes de texte (en ignorant les retours chariot) jusqu'à ce qu'il trouve deux retours chariot dans une même ligne.
Arrêt du renvoi à la ligne et des valeurs par défaut de formatage
Pour mettre fin au renvoi à la ligne et aux valeurs par défaut de formatage dans une fenêtre hypertexte, vous pouvez utiliser aseview.exe pour transmettre les indicateurs /NOWORDWRAP /NOFORMAT sous forme d'arguments de ligne de commande. Il s'agit du seul moyen de mettre fin via un programme au renvoi à la ligne et aux valeurs par défaut de formatage dans une fenêtre hypertexte.
Le tableau ci-après indique et décrit les options de l'instruction
WinCreateHyperViewer.
Option de la commande | Description |
ID | Si la commande est un entier, elle est supposée être un ID de bouton. Lorsque
l'utilisateur clique sur le bouton, un message $MsgButton est envoyé au gestionnaire
d'événements de la fenêtre d'afficheur hypertexte. Le texte du bouton figure dans le premier paramètre
d'événement (entier) et l'ID du bouton se trouve dans le second
paramètre d'événement (entier). Si aucune commande n'est fournie (si le bouton est de la forme [[texte bouton]]), le gestionnaire d'événements reçoit toujours un message $MsgButton lorsque le bouton est sélectionné. Cependant, l'ID de bouton (second paramètre d'événement, entier) est 0. Dans ce cas, si le gestionnaire d'événement renvoie la valeur zéro, l'afficheur modifie le texte du bouton afin que la commande formButtonTextand effectue une opération de recherche (voir ci-après). |
JUMP | L'option JUMP <nom marque> recherche dans la liste des balises une marque correspondant au texte suivant la balise Jump (pour plus d'informations, reportez-vous à la balise Marker). Si une occurrence est trouvée, la ligne contenant la marque est placée au début de l'afficheur et un EventJump est généré. L'affichage de l'hypertexte traite cet EventJump pour conserver une liste des marques "visitées" dans un fichier. |
LABEL | L'option LABEL <texte libellé> peut correspondre à n'importe quelle chaîne de caractères. Un message $MsgLabel est envoyé au gestionnaire d'événements de la fenêtre avec le texte du bouton dans le premier paramètre d'événement (chaîne) et le libellé dans le second paramètre d'événement (chaîne). |
MARKER | L'option MARKER <nom marque> place une marque invisible dans le texte. |
SEARCH | L'option SEARCH <texte recherché> recherche le
<texte recherché> dans le fichier en cours en commençant par le début. Le texte recherché ne doit pas
figurer sur plusieurs lignes sauf s'il comporte de nouvelles lignes intégrées.
La recherche distingue les majuscules et les minuscules sauf sous
Windows. Si le texte est trouvé, l'afficheur affiche la ligne contenant le texte au début de la fenêtre. |
FILE | L'option FILE <nom-fichier> [NEW|REPLACE] [NOWORDWRAP|NOFORMAT] ouvre un
nouveau fichier texte. Par défaut, le nouveau fichier remplace le fichier en cours dans l'afficheur. C'est
également le cas lorsque le mot clé REPLACE suit le <nom-fichier>. Si le mot clé NEW figure après le <nom-fichier>, une nouvelle fenêtre d'afficheur s'ouvre et affiche le nouveau fichier. La taille de l'afficheur est déterminée par le système. Par défaut, le renvoi à la ligne est utilisé pour que toutes les lignes qui ne sont pas séparées par une ligne vide soient traitées comme un paragraphe multicolonne. La première ligne vide suivant une ligne non vide est supprimée. Le mot clé NOWORDWRAP met fin à cette option. Le mot clé NOFORMAT, utilisé conjointement avec le renvoi à la ligne par défaut, empêche les lignes adjacentes d'être associées mais renvoie les longues lignes à la ligne. |
IMAGE | L'option IMAGE <fichier-image>.BMP [SCROLL | SCALE] ouvre un afficheur d'image et affiche le fichier d'image indiqué. Par défaut, l'image est coupée pour s'ajuster aux dimensions de l'afficheur. Le mot clé SCALE redimensionne l'image à l'échelle de l'afficheur. Le mot clé SCROLL coupe l'image mais ajoute des barres de défilement dans l'afficheur qui permettent de visualiser la totalité de l'image en la faisant défiler. |
PLAY | L'option PLAY <fichier-son>.WAV exécute le fichier audio indiqué. Une fenêtre d'afficheur hypertexte apparaît permettant à l'utilisateur de contrôler la lecture du fichier audio. |
RUN | L'option RUN <nom-app> exécute l'application indiquée. <nom-app>peut être une chaîne contenant non seulement le nom d'un exécutable ou d'un fichier de commandes mais également des arguments de ligne de commande (par exemple, [[Windows NT|RUN F:\DOC\DOCMAN.EXE WINDOWS_NT]]). |
Pour obtenir une liste complète des différents types de messages pouvant être reçus par des fenêtres
génériques, reportez-vous à la rubrique Messages TSD Script.
Pour plus d'informations sur les indicateurs de style de fenêtre, reportez-vous à l'instruction WinCreate.
KNOWLEDGEBASE WinHyper;
ROUTINES PROCEDURE HyperTextExample;
PRIVATE
CONSTANTS MENU_LIST {'File' ,'Open','/L ','Exit',''}: LIST OF STRING;
ROUTINES EVENT HyperTextEvent IS VARIABLES fileName: STRING; ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); WinSetIconBar($Handle,{'hyp_text.ico', 'hypimage.ico', 'hypsound.ico','search.ico'}:
LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 1, 101 THEN IF WinFileDialog($Desktop,fileName,'*.*', 10,10, 'Select file to view',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgOpenFile,fileName, fileName,0); END; ELSWHEN 2 THEN IF WinFileDialog($Desktop,fileName,'*.bmp', 10,10, 'Select bitmap to view',0) < 0 THEN WinMessageBox( $Handle, 'Error', $MBOk+ $MBIconError,fileName ); ELSE SendMessage($Handle,$MsgDisplayImage,fileName, fileName,0); END; ELSWHEN 3 THEN IF WinFileDialog($Desktop,fileName,'*.wav',10,10, 'Select sound to play',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgPlaySound,fileName, fileName,0); END; ELSWHEN 4 THEN IF WinEditField($Desktop,fileName,0,0,30, 'Search for?', BitOr($WinAutoPos, $WinBorder, $WinTitle)) < 1 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgSearch,fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgChar THEN WHEN $KeyCode IS $KeyAltT THEN SendMessage($Handle,$MsgMenu,1); ELSWHEN $KeyAltI THEN SendMessage($Handle,$MsgMenu,2); ELSWHEN $KeyAltA THEN SendMessage($Handle,$MsgMenu,3); ELSWHEN $KeyAltS THEN SendMessage($Handle,$MsgMenu,4); ELSE WinMessageBox($Handle,'Hypertext Key',$MBOK, $KeyCode ); END; ELSWHEN $MsgButton THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text' & $EventParm(1,STRING) & 'Button ID ' & $EventParm(2,INTEGER)); ELSWHEN $MsgLabel THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text ' & $EventParm(1,STRING) & 'Button Label ' & $EventParm(2,STRING)); END; END (* Hypertext Event *); PROCEDURE HyperTextExample IS VARIABLES whdl: WINDOW; ACTIONS WinCreateHyperViewer($Desktop,whdl,'formman.hlp', HyperTextEvent,1,1,80,25, 'Hyertext Test', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinIconBar,$WinSysMenu, $WinMinMax, $WinAutoPos,$WinAutoSize)); WinWait(whdl); END (* Hypertext Example *);
Pour plus d'informations sur le formatage des fichiers hypermédia, reportez-vous au manuel Tivoli Service Desk Developer's Toolkit - Outils et utilitaires.
Pour plus d'informations sur la variable d'environnement SAIPATH, reportez-vous à la rubrique Recherche de fichiers à l'aide de SAIPATH.
Crée une fenêtre affichant une image.
FUNCTION WinCreateImage(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style, id: INTEGER): INTEGER;
Nom de l'argument | Description |
whdlParent | Parent de la fenêtre à créer. |
whdl | Le descripteur de la fenêtre nouvellement créée est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
fileName | Nom de fichier de l'image affichée. Il peut s'agir d'un fichier bitmap OS/2 ou Windows, ou d'un fichier d'image .PCX. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. Les abscisses sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. Les ordonnées sont exprimées en cellules de caractère. |
width | Largeur (dimension x) de la fenêtre, bordure non comprise. La largeur est exprimée en cellules de caractère. |
height | Hauteur (dimension y) de la fenêtre, bordure, barre de titre, barre de menus, barre d'outils et barre d'état non comprises. La hauteur est exprimée en cellules de caractère. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. Utilisez le style $ImgTitle. |
style | Entier dont chaque bit contrôle un aspect du comportement de la fenêtre. Pour plus d'informations sur les options des indicateurs de style, reportez-vous à la section Remarques. |
id | ID (entier) utilisé par le message $MsgImage pour identifier l'image lorsqu'un événement est indiqué. |
Vous pouvez composer le style de la fenêtre d'image à partir des styles suivants à
l'aide de l'opérateur BITOR :
Style | Description |
$ImgScroll | L'image apparaît en grandeur réelle telle qu'elle est dans le fichier. La fenêtre est dotée de barres de défilement. Si l'image est plus grande que la fenêtre, vous pouvez utiliser les barres de défilement pour visualiser la totalité de l'image. |
$ImgClip | L'image apparaît en grandeur réelle telle qu'elle est dans le fichier. Si nécessaire, l'image est coupée à droite et à gauche pour s'adapter à la taille de la fenêtre. |
$ImgScale | La largeur et la hauteur de l'image sont redimensionnées pour s'adapter à la taille de la fenêtre demandée. Ce processus peut déformer l'image. |
$ImgBorder | La fenêtre contenant l'image a une bordure. |
$ImgTitle | La fenêtre contenant l'image a un titre. $ImgBorder doit également être
indiqué. Les fenêtres contenant les images peuvent répondre au message $MsgSetImage. Si ce message est associé au nom d'un fichier d'image, la fenêtre charge et affiche le fichier indiqué. |
KNOWLEDGEBASE WinImage;
TYPES ImageRec IS RECORD fileName: STRING; whdlImage: WINDOW; END;
ROUTINES PROCEDURE ImageExample;
PRIVATE
ROUTINES EVENT ImageEvent(REF imageData: ImageRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,{'File','Open','/L','Exit',''}: LIST OF STRING); WinCreateImage($Handle,imageData.whdlImage, 'os2logo.bmp',1,1,WinWidth($Handle), WinHeight($Handle),'',$ImgScroll,1); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN IF WinFileDialog($Handle,imageData.fileName,'*.bmp', 10,10,'Select new image', 0 ) >= 1 THEN SendMessage(imageData.whdlImage, $MsgSetImage,imageData.fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgSize THEN SendMessage(imageData.whdlImage,$MsgSetSize, $EventParm(1,INTEGER),$EventParm(2,INTEGER)); ELSWHEN $MsgImage THEN WinMessageBox($Handle,'Image',$MBOK,$EventParm(1, INTEGER)); END; END (* Image Event *);
PROCEDURE ImageExample IS VARIABLES whdl: WINDOW; data: ImageRec ACTIONS WinCreate($Desktop,whdl,ImageEvent{data},0,0,0,0, 'Image test', BitOr($WinBorder,$WinTitle,$WinResize, $WinMenu,$WinMinMax,$WinTaskList, $WinSysMenu,$WinAutoPos, $WinAutoSize)); WinWait(whdl); END (* Image Example *);
Crée une surface rectangulaire dans laquelle l'utilisateur peut cliquer.
FUNCTION WinCreateMouseRect(VAL whdl: WINDOW, VAL xLoc, yLoc, xLen, yLen, id: INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle le rectangle est créé. L'argument whdl peut faire référence à une fenêtre standard ou à une fenêtre défilante. |
xLoc | Abscisse de l'angle supérieur gauche de la surface. |
yLoc | Ordonnée de l'angle supérieur gauche de la surface. |
xLen | Largeur de la surface. |
yLen | Hauteur de la surface. |
id | Entier permettant d'identifier la surface. |
Par défaut, TSD Script ne rend pas compte des événements de souris dans une fenêtre. Vous pouvez cependant faire en sorte que des événements tels des déplacements de souris ou des clics soient indiqués si vous créez une zone souris (surface tenant compte des opérations effectuées à l'aide de la souris). Il s'agit d'une surface rectangulaire dans une fenêtre. Lors de sa création, vous lui attribuez un ID entier. Cet ID est indiqué à la fenêtre parent ainsi que tous les événements de souris se produisant dans cette surface.
Lorsqu'une action a lieu dans une telle surface, le message $MsgMouse et les quatre paramètres d'événement (entiers) ci-après sont envoyés au parent de la surface :
Conseil : WinSetMousePointer doit être
appelé à chaque fois qu'une des fenêtres traite un événement $MsgMouse.
KNOWLEDGEBASE WinMouse;
ROUTINES PROCEDURE MouseExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' , 'Exit','', 'Pointer type', 'MouseDefaultPtr', 'MouseuLArrowPtr', 'MouseURArrowPtr', 'MouseDRArrowPtr', 'MouseDLArrowPtr', 'MouseUPResizePtr', 'MouseURResizePtr', 'MouseRTResizePtr', 'MouseDRResizePtr', 'MouseDNResizePtr', 'MouseDLResizePtr', 'MouseLTResizePtr', 'MouseULResizePtr', 'MouseCrossPtr', 'MouseHandPtr', 'MouseHourGlassPtr', 'MouseIBeamPtr',''}: LIST OF STRING;
ROUTINES EVENT MouseEvent(REF pointerType: INTEGER) IS ROUTINES
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN pointerType := $MouseDefaultPtr; ELSWHEN 202 THEN pointerType := $MouseuLArrowPtr; ELSWHEN 203 THEN pointerType := $MouseURArrowPtr; ELSWHEN 204 THEN pointerType := $MouseDRArrowPtr; ELSWHEN 205 THEN pointerType := $MouseDLArrowPtr; ELSWHEN 206 THEN pointerType := $MouseUPResizePtr; ELSWHEN 207 THEN pointerType := $MouseURResizePtr; ELSWHEN 208 THEN pointerType := $MouseRTResizePtr; ELSWHEN 209 THEN pointerType := $MouseDRResizePtr; ELSWHEN 210 THEN pointerType := $MouseDNResizePtr; ELSWHEN 211 THEN pointerType := $MouseDLResizePtr; ELSWHEN 212 THEN pointerType := $MouseLTResizePtr; ELSWHEN 213 THEN pointerType := $MouseULResizePtr; ELSWHEN 214 THEN pointerType := $MouseCrossPtr; ELSWHEN 215 THEN pointerType := $MouseHandPtr; ELSWHEN 216 THEN pointerType := $MouseHourGlassPtr; ELSWHEN 217 THEN pointerType := $MouseIBeamPtr; END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); WinCreateMouseRect($Handle,1,1, WinWidth($Handle), WinHeight($Handle),1); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); ELSWHEN $MsgMouse THEN WinSetMousePointer($handle,pointerType); END; END (* Mouse Event *);
PROCEDURE MouseExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MouseEvent{ $MouseDefaultPtr}, 0,0,60,20, 'Mouse example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Mouse Example *);
Pour plus d'informations, reportez-vous aux sections Pointeurs de la souris et Messages de la souris.
Crée une fenêtre défilante non modale qui se retrace elle-même si nécessaire.
WinCreateScrollWindow(VAL whdlParent: WINDOW, REF whdl: WINDOW,| VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title, font: STRING, VAL pointSize, style: INTEGER): INTEGER;
Nom de l'argument | Description |
whdlParent | Parent de la fenêtre défilante. |
whdl | Le descripteur de la fenêtre nouvellement créée est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
EventHandler | Gestionnaire d'événements chargé de traiter les événements générés par la fenêtre ou la boîte de dialogue. Si aucun traitement d'événement n'est requis, le mot clé $NullHandler peut être utilisé. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. Les abscisses et les ordonnées sont exprimées en cellules de caractère. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. |
width | Largeur (dimension x) de la fenêtre, bordure non comprise. La largeur est exprimée en cellules de caractère. |
height | Hauteur (dimension y) de la fenêtre, bordure, barre de titre, barre de menus, barre d'outils et barre d'état non comprises. La hauteur est exprimée en cellules de caractère. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. Utilisez le style $WinTitle. |
font | Nom d'une police système disponible. |
pointSize | Taille en points (ou corps) de la police à utiliser dans la fenêtre. |
style | Masque de contrôle des données entières représentant une liste d'indicateurs de style
permettant de contrôler l'aspect de la fenêtre. Pour plus d'informations, reportez-vous à la section Remarques relative à l'instruction WinCreate. |
Premiers messages reçus
Lorsqu'une fenêtre défilante est créée, les messages ci-après sont reçus dans l'ordre indiqué.
Suivi et retraçage des fenêtres défilantes
WinCreateScrollWindow permet de créer une fenêtre défilante virtuelle. Dans le cas de fenêtres génériques, le programmeur connaît le contenu de la fenêtre et la retrace lorsqu'elle reçoit un message $MsgPaint. Les fenêtres défilantes "connaissent" leur contenu. Les programmeurs y écrivent des informations via WinWrite, WinWriteLN, etc.
Remarque : Pour obtenir une liste des messages pouvant être générés er reçus par les fenêtres défilantes, reportez-vous à la rubrique Messages TSD Script.
Personnalisation des fenêtres défilantes
Les fenêtres défilantes peuvent contenir des barres d'outils, des barres de menus, des barres d'état et d'autres éléments disponibles pour les fenêtres génériques.
KNOWLEDGEBASE Scroll;
CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','E~xit',''}: LIST OF STRING;
TYPES EditorData IS RECORD statusLine: STRING; lines: LIST OF STRING; END;
ROUTINES PROCEDURE FileView;
PRIVATE
ROUTINES
EVENT EditorEvent(REF editorData: EditorData) IS ROUTINES PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS VARIABLES fileName: STRING; editFile: FILE; result: INTEGER; ACTIONS WHEN selection IS MENU_OPEN THEN WinFileDialog($Handle,fileName,'*.KB',5,5, 'Select file to edit',0); IF FOpen(editFile,fileName,$Read) > 0 THEN FReadText(editFile,editorData.lines); FClose(editFile); editorData.statusLine := ' File: ' & fileName; WinClear( $Handle ); WinWriteLN($Handle,editorData.lines); PostMessage($Handle,$MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Process Main Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); editorData.statusLine := 'File:'; ELSWHEN $MsgMenu THEN ProcessMainMenu($MenuSelection); ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,editorData.statusLine); END; END (* Editor Event *);
PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,EditorEvent, 0,0,0,0, 'KML File viewer', $SystemMonospaced,10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinStatus, $WinAutoPos,$WinAutoSize, $WinVScroll,$WinHScroll, $WinTaskList)); WinWait(whdl); END (* File View *);
Pour plus d'informations, reportez-vous à la section Styles de fenêtre.
Affiche un éditeur sur une seule ligne pour le type de données de la valeur éditée.
FUNCTION WinEditField(VAL parent: WINDOW, REF value: ANY, VAL xLoc, yLoc, length: INTEGER, title: STRING, VAL style: INTEGER): INTEGER;
Nom de l'argument | Description |
parent | Parent de la fenêtre à créer. Sous Windows, si
la fenêtre parent est désactivée lors de l'appel de WinEditField, la fenêtre WinEditField n'est pas coupée pour s'adapter à la
fenêtre parent. Sous Windows, si $Desktop est indiqué en tant que parent et combiné avec $WinModal, la fenêtre créée via WinEditField est non modale. La section ci-après décrit les indicateurs de style tels que $WinModal. |
xLoc | Abscisse (x) de l'angle supérieur gauche de la fenêtre. |
yLoc | Ordonnée (y) de l'angle supérieur gauche de la fenêtre. |
length | Largeur (dimension x) de la fenêtre, bordure non comprise. |
title | Titre à afficher sur la barre de titre. La fenêtre doit pour cela comporter une barre de titre. Utilisez le style $WinTitle. Sous Windows, la constante $WinTitle est automatiquement ajoutée si vous ne l'indiquez pas. |
style | Entier contenant une liste des indicateurs de style déterminant l'aspect de la fenêtre. Pour plus d'informations, reportez-vous à la section ci-après concernant les indicateurs de style disponibles. |
Les indicateurs de style disponibles de WinEditField sont répertoriés dans le tableau
suivant :
Indicateur de style | Description |
$WinAutoPos | Le système détermine l'emplacement optimal de la fenêtre. Les paramètres xLoc et yLoc sont ignorés. |
$WinAutoSize | Le système détermine la taille optimale de la fenêtre. Les paramètres xLen et yLen sont ignorés. |
$WinBorder | La fenêtre présente une bordure similaire à celle d'une boîte de dialogue. Plusieurs styles requièrent une bordure. Sous Windows, la constante $WinBorder est automatiquement ajoutée si vous ne l'indiquez pas. |
$WinDefaultStyle | Style par défaut défini par le système à partir de $WinBorder, $WinResize, $WinTitle et $WinSysMenu. |
$WinField | La fenêtre présente une bordure à un seul pixel (comme les contrôles des boîtes de dialogue). Ce style et $WinBorder s'excluent mutuellement. |
$WinInvisible | La fenêtre créée est masquée. Elle doit recevoir un message $MsgShow pour devenir visible. |
$WinModal | La zone d'édition créée est une fenêtre modale. La fenêtre parent de la fenêtre d'édition et de toutes les fenêtres enfant est désactivée. |
$WinNone | La fenêtre ne présente pas de bordure. |
$WinTaskList | Le titre de la fenêtre est saisi dans la liste des tâches système. L'utilisateur peut activer la fenêtre à partir de la liste des tâches. Ce style doit généralement être utilisé pour la fenêtre principale d'une application. |
$WinTitle | La fenêtre présente une barre de titre. Si ce style est absent, aucun titre n'est affiché même si un titre est indiqué comme paramètre. Une barre de titre permet de déplacer la fenêtre. |
VARIABLES intVal: INTEGER; ACTIONS WinEditField($Desktop,intVal,0,0,30,'Integer', $WinAutoPos+$WinBorder+ $WinTitle);
DlgBox
Active ou désactive une boîte de dialogue ou une fenêtre.
FUNCTION WinEnableWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la boîte de dialogue ou de la fenêtre dont l'état inactif doit être modifié. |
state | Prend la valeur TRUE si la fenêtre doit être "activée" et prend la valeur FALSE si elle doit être "désactivée". |
Cette fonction est également mise en oeuvre en tant que message pouvant être transmis à un formulaire de boîte de dialogue ou à une fenêtre ($MsgEnable).
KNOWLEDGEBASE enable;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Test Window', $WinDefaultStyle); WinEnableWindow(Handle, FALSE); SysDelay(1000); WinEnableWindow(HANDLE, TRUE); WinWait(Handle); END;
Affiche une boîte de dialogue de sélection de fichier.
FUNCTION WinFileDialog(VAL whdlParent: WINDOW, REF fileName: STRING, VAL startMask: STRING, VAL xLoc, yLoc: INTEGER, VAL title: STRING, VAL style: INTEGER ): INTEGER;
Nom de l'argument | Description |
whdlParent | Parent de la fenêtre à créer. |
fileName | Renvoie le nom du fichier sélectionné par l'utilisateur. Si l'utilisateur choisit d'annuler la boîte de dialogue, la valeur n'est pas modifiée. |
startMask | Le masque de sélection du fichier initial ainsi que les caractères génériques * et ? peuvent être utilisés. |
xLoc | Abscisse (x) de l'angle inférieur gauche de la fenêtre. |
yLoc | Ordonnée (y) de l'angle inférieur gauche de la fenêtre. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. Utilisez le style $WinTitle. |
style | Style de la boîte de dialogue du fichier. Les valeurs admises sont :
|
WinFileDialog permet d'inviter les utilisateurs à entrer un nom de fichier lors de l'ouverture d'un nouveau fichier ou lorsqu'ils enregistrent leur travail dans un nouveau fichier. Si vous définissez l'argument startMask, vous pouvez utiliser WinFileDialog pour choisir des types spécifiques de fichiers (par exemple, *.kb for knowledgebases).
Conseil : Les paramètres xLoc et yLoc n'ont pas d'incidence sous Windows.
VARIABLES fileName: STRING; ACTIONS IF WinFileDialog($Desktop,fileName,'*.TXT', 10,10, 'Select file to edit',0) > 0 THEN LoadAndEdit(fileName); END;
Recherche l'abscisse d'un descripteur valide de fenêtre ou de boîte de dialogue. L'abscisse 00 correspond à l'angle supérieur gauche.
FUNCTION WinGetXPos (VAL whdl: Window): Integer;
Nom de l'argument | Description |
whdl | Descripteur de fenêtre dont l'abscisse est recherchée. |
WinGetXPos diffère de WinX car il recherche l'angle supérieur gauche d'une fenêtre ou d'une boîte de dialogue alors que WinX renvoie l'emplacement d'un caractère dans une fenêtre. L'abscisse est alors renvoyée.
KNOWLEDGEBASE GetPos;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; x,y : INTEGER; ACTIONS WinCreateScrollWindow($Desktop, Handle, $Nullhandler, 10,10,75,25, 'Test', $SystemMonospaced,10, $WinDefaultStyle); x := WinGetXPos(Handle); y := WinGetYPos(Handle); WinWriteLN(Handle, 'The upper left corner of the window is at (' & x & ', ' & y & ')'); WinWait(Handle); END;
WinGetYPos
Recherche l'ordonnée d'un descripteur valide de fenêtre ou de boîte de dialogue. L'ordonnée 00 correspond à l'angle supérieur gauche de la fenêtre ou de la boîte de dialogue.
FUNCTION WinGetYPos (VAL whdl: Window): Integer;
Nom de l'argument | Description |
whdl | Descripteur de fenêtre dont l'ordonnée est recherchée. |
WinGetYPos diffère de WinY car il recherche l'angle supérieur gauche d'une fenêtre ou d'une boîte de dialogue alors que WinY renvoie l'emplacement d'un caractère dans une fenêtre.
Pour plus d'informations sur l'instruction WinGetXPos, reportez-vous à la section Exemple.
WinGetXPos
Déplace le pointeur.
FUNCTION WinGoToXY(VAL whdl: WINDOW, VAL xLoc, yLoc:
INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
xLoc | Nouvelle abscisse de l'emplacement en cours du pointeur. |
yLoc | Nouvelle ordonnée de l'emplacement en cours du pointeur. |
WHEN $Event IS $MsgChar THEN WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1); ELSWHEN $KeyRightArrow THEN WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle)); END; END;
Recherche la hauteur d'une fenêtre et la renvoie, exprimée en cellules de caractères.
FUNCTION WinHeight(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
WinHeight renvoie la hauteur de la surface utile en cours d'une fenêtre donnée.
WinCreateMouseZone($Handle,1,1, WinWidth($Handle),WinHeight($Handle),1);
Charge un menu à partir d'un fichier ressource et l'associe à une fenêtre spécifique. Tout menu précédemment associé est remplacé.
FUNCTION WinLoadMenuBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nom de l'argument | Description |
win | Formulaire, fenêtre générique, défilante ou hypertexte. |
resource | Chaîne de ressources au format standard. |
Pour associer un menu à un formulaire, vous pouvez aussi attribuer au menu le même nom que le formulaire du même fichier .df. Le menu est chargé automatiquement si le formulaire a le style du menu.
KNOWLEDGEBASE loadmenu;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (*load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadMenuBar(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
Charge une ressource de menu à partir d'un fichier .df et l'associe en tant que menu en incrustation à la fenêtre en remplaçant tout menu en incrustation existant. Il s'affiche automatiquement et répond au comportement de la souris conforme à la plateforme. Les sélections effectuées à partir du menu en incrustation sont indiquées par $MsgMenu.
FUNCTION WinLoadPopupMenu( VAL whdl: WINDOW, VAL menu: STRING, ): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur du formulaire de boîte de dialogue ou de la fenêtre dont le texte du titre doit être modifié. |
menu | Nom complet du fichier de spécification décrivant le menu au menu créé. |
Si vous utilisez WinLoadPopupMenu, le menu s'affiche automatiquement lorsque la souris est utilisée de manière conforme à la plateforme. Lorsque l'utilisateur sélectionne une option de menu, un message $MsgMenu est envoyé à la fenêtre. Ce comportement diffère de celui entraîné par l'ancienne fonction WinPopup. Dans le cas de WinPopup, l'utilisateur doit se servir correctement de la souris et appeler WinPopup pour afficher le menu en incrustation. WinPopup renvoie ensuite l'ID de l'option de menu sélectionnée.
KNOWLEDGEBASE loadpop;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadPopupMenu(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
WinSetPopupMenu
Charge une barre d'outils à partir d'un fichier ressource et l'associe à une fenêtre spécifique. Toute barre d'outils précédemment associée est remplacée.
FUNCTION WinLoadToolBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nom de l'argument | Description |
win | Formulaire, fenêtre générique, défilante ou hypertexte. |
resource | Chaîne de ressource au format standard. |
Pour associer une barre d'outils à un formulaire, attribuez à une barre d'outils le même nom que le formulaire du même fichier .df. La barre d'outils est chargée automatiquement si le formulaire a le style de la barre d'outils.
KNOWLEDGEBASE loadtool;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the toolbar with id MAIN_TOOLBAR from the file loadtool.df *) WinLoadToolBar(mainWindow, 'loadtool[MAIN_TOOLBAR]'); WinWait(mainWindow);
END;
Définit l'état sélectionné d'une option de menu.
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur d'une fenêtre présentant une barre de menu. |
id | ID de l'option de menu à définir. |
newState | Nouvel état de l'option de menu. |
WinMenuCheckItem permet de sélectionner et de désélectionner une option de menu. Le statut en cours sélectionné d'une option donnée peut être testé lorsque vous appelez WinMenuItemIsChecked.
Remarque : Les options de menu peuvent être identifiées avec des chaînes ou des entiers.
WinMenuCheckItem($Handle,204,TRUE);
Définit l'état activé ou désactivé d'une option de menu.
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur d'une fenêtre présentant une barre de menu. |
id | ID de l'option de menu à définir. |
newState | Nouvel état de l'option de menu. |
WinMenuEnableItem permet d'activer ou de désactiver une option de menu. Les options désactivées ne peuvent pas être sélectionnées. La constante $SysMenuCloseItem permet d'activer ou de désactiver l'option de fermeture d'un menu système d'une fenêtre de la manière suivante :
(* This line enables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, TRUE); (* This line disables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, FALSE);
Remarque : Les options de menu peuvent être identifiées avec des chaînes ou des entiers.
WinMenuEnableItem($Handle,204,TRUE);
Vérifie si une option de menu est actuellement sélectionnée.
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: STRING): BOOLEAN;
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: INTEGER): BOOLEAN;
Nom de l'argument | Description |
whdl | Descripteur d'une fenêtre présentant une barre de menu. |
id | ID de l'option de menu à définir. |
TSD Script permet de configurer une barre de menus comportant des options. Vous pouvez vérifier si une option de menu donnée est sélectionnée en appelant WinMenuItemIsChecked et en transmettant deux éléments :
Remarque : Les options de menu peuvent être identifiées avec des chaînes ou des entiers.
IF WinMenuItemIsChecked($Handle,204) THEN CarryOutAction; END;
Affiche une boîte de message et renvoie une sélection d'utilisateur. (Le texte du message est limité à 512 caractères.)
FUNCTION WinMessageBox(VAL whdlParent: WINDOW, VAL title: STRING, VAL style: INTEGER, VAL message: STRING): INTEGER;
Gestionnaires d'événements et DDE
N'utilisez pas WinWait lorsque vous traitez un message $MsgDDEInitiate. $MsgDDEInitiate diffuse un message aux applications et verrouille la file d'attente des messages jusqu'à ce qu'une réponse soit renvoyée. Pendant ce temps, l'instruction WinWait lance un gestionnaire d'événements qui attend une réponse de la file d'attente des messages. WinWait empêche les autres applications d'envoyer des messages à la file d'attente. Cela entraîne un blocage et verrouille l'interface utilisateur.
Nom de l'argument | Description |
whdlParent | Parent de la boîte de message. S'il s'agit de $Desktop, la boîte de message ne peut pas être modale. |
title | Titre affiché sur la barre de titre de la fenêtre. La fenêtre doit pour cela comporter une barre de titre. Utilisez le style $WinTitle. |
style | Style de la boîte de message. Il s'agit d'un masque de contrôle de données qui
détermine l'aspect et le comportement de la boîte de message. Pour plus d'informations sur les options de style, reportez-vous à la section Remarques. |
messageText | Texte du message à afficher. Le renvoi à la ligne et la fonction de nouvelle ligne sont pris en charge. Ce texte est limité à 512 caractères. |
Description d'une boîte de message
Une boîte de message est une boîte de dialogue simple que vous créez à l'aide de WinMessageBox. Il n'est pas nécessaire de créer un fichier .df ou d'utiliser le concepteur d'interfaces (Interface Designer).
Lorsque vous utilisez WinMessageBox, vous pouvez uniquement ajouter un titre, une chaîne de texte (le message) et trois boutons au maximum. Vous ne pouvez pas ajouter d'autres zones de texte ou contrôles.
Personnalisation des boîtes de message
Le style d'une boîte de message comprend les paramètres suivants :
Nom du style | Description |
Style du bouton | Indique les différents styles de boutons figurant dans une boîte de message. |
Style d'icône | Indique un type d'icône à afficher dans la boîte de message. |
Bouton par défaut | Indique les boutons à définir par défaut. |
Mode | Indique la modalité de la boîte de message. Cela détermine si l'utilisateur peut effectuer une autre action avant de répondre à la boîte de message. |
Titre | Si vous souhaitez ajouter une barre de titre à une fenêtre sous OS/2, vous devez indiquer la constante $WinTitle. Sous Windows, toutes les fenêtres présentent automatiquement une barre de titre. |
Pour créer le style d'une boîte de message, choisissez l'un des styles de bouton suivants :
Ne choisissez aucun style ou choisissez plusieurs styles d'icône parmi les suivants :
Ne choisissez aucun bouton ou choisissez l'un des boutons par défaut suivants :
Ne choisissez aucun mode ou choisissez l'un des modes suivants :
Si la boîte de message comporte un bouton Annuler, le fait d'appuyer sur la touche Echap ferme la boîte de message et WinMessageBox renvoie $MBResultCancel. S'il n'existe pas de bouton Annuler, la touche Echap n'a aucun effet. $MBResultError est renvoyé uniquement si une erreur interne se produit.
La boîte de message se dimensionne elle-même en fonction du texte du message et de la longueur du titre. Elle peut occuper jusqu'à deux tiers de la hauteur de l'écran.
WinMessageBox ($Desktop,'Error',$MBOK+$MBIconError, 'Unable to open file');
Pour obtenir une liste des indicateurs de style disponibles, reportez-vous à la section Styles de boîtes de message.
Parent de la fenêtre transmise en tant qu'argument.
FUNCTION WinParent(VAL whdl: WINDOW): WINDOW;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dont le parent est demandé. |
VARIABLES parent: WINDOW; ACTIONS parent := WinParent($Handle);
Renvoie le parent de la fenêtre transmise en tant qu'argument.
Définit les couleurs courantes d'une fenêtre, à savoir la couleur du texte et la couleur de l'arrière-plan.
FUNCTION WinSetColor(VAL whdl: WINDOW, VAL foreGround: INTEGER; VAL backGround: INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
foreGround | Nouvelle couleur d'avant-plan. Reportez-vous à la section Remarques concernant la liste complète des constantes relatives aux couleurs. |
backGround | Nouvelle couleur d'arrière-plan. Reportez-vous à la section Remarques concernant la liste complète des constantes relatives aux couleurs. |
Constantes de couleur prédéfinies
Les constantes de couleur prédéfinies suivantes sont disponibles :
Remarque : $WinDefaultColor sélectionne l'avant-plan et l'arrière-plan par défaut de la fenêtre.
$WinTransparent entraîne l'écriture de texte transparent par toutes les opérations de sortie de texte jusqu'à ce que WinSetColor soit appelé avec $WinOpaque comme couleur d'arrière-plan. Par défaut, le texte est transparent.
$WinOpaque entraîne l'écriture de texte opaque par toutes les opérations de sortie de texte. Cela signifie qu'un rectangle entourant le texte prend la couleur de l'arrière-plan courant. $WinOpaque reste effectif jusqu'à ce que WinSetColor soit appelé avec $WinTransparent comme couleur d'arrière-plan.
Accès aux couleurs définies par le système d'exploitation
Les constantes prédéfinies ci-après permettent d'accéder aux couleurs configurables par l'utilisateur définies par le système d'exploitation :
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); END;
Tivoli Service Desk 6.0 Developer's Toolkit - Manuel de référence du langage TSD Script