Tivoli Service Desk 6.0 Developer's Toolkit - Manuel de référence du langage TSD Script
Définit la police des opérations d'écriture suivantes dans une fenêtre standard.
FUNCTION WinSetFont(VAL whdl: WINDOW, VAL fontName: STRING, VAL pointSize: INTEGER, VAL faceStyle: INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle la police doit être définie. Il doit s'agir d'une fenêtre standard créée par WinCreate. |
fontName | Nom de la police à définir en fonction du système d'exploitation. Pour obtenir une liste des polices système par défaut, reportez-vous à la section Remarques relative à cette instruction. |
pointSize | Taille de la police en points. Les tailles en points des polices tramées disponibles pour les polices standard sont les suivantes : 8, 10, 12, 14, 18 et 24. Les polices ne sont pas toutes disponibles dans toutes les tailles. Les polices vectorielles peuvent être disponibles dans toutes les tailles. Il existe des polices vectorielles disponibles pour toutes les polices par défaut sauf pour les polices à espacement proportionnel ou à espacement fixe. Ces polices sont uniquement disponibles en taille 10. |
faceStyle | Ensemble d'indicateurs pouvant être combinés pour former un style de police composé. Les valeurs admises sont $FontPlain (valeur par défaut), $FontBold, $FontUnderScore et $FontStrikeOut. Les polices ne prennent pas toutes en charge tous les styles. Ces styles sont ajoutés à une police existante. Certaines polices sont créées avec un style tel que gras ou itlaique. Dans ce cas, le style est toujours présent. |
Les constantes prédéfinies ci-après permettent d'accéder aux polices système par défaut :
KNOWLEDGEBASE WinFont; ROUTINES PROCEDURE FontExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' ,'Exit', '', 'Font','Courier','Helvetica','System Proportional', 'System Monospaced','Times Roman','Symbol Set','' }: LIST OF STRING;
ROUTINES
EVENT MainEvent(REF fontName: STRING) IS ROUTINES PROCEDURE PaintFont(VAL whdl: WINDOW, VAL fontName: STRING) IS
ACTIONS WinSetFont(whdl,'System Proportional',10, $FontPlain); WinClear(whdl); WinSetFont(whdl,fontName,8,$FontPlain); WinWriteAt(whdl,1,1,fontName & ' 8 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,10,$FontPlain); WinWrite(whdl,fontName & ' 10 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,12,$FontPlain); WinWrite(whdl,fontName & ' 12 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,14,$FontPlain); WinWrite(whdl,fontName & ' 14 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,18,$FontPlain); WinWrite(whdl,fontName & ' 18 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontPlain); WinWrite(whdl,fontName & ' 24 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontBold); WinWrite(whdl,fontName & ' 24 Bold '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontItalic); WinWrite(whdl,fontName & ' 24 Italic '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontUnderscore); WinWrite(whdl,fontName & ' 24 Underscore '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName, 24, $FontStrikeOut); WinWrite(whdl,fontName & ' 24 StrikeOut '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName, 48, $FontPlain); WinWrite(whdl,fontName & ' 48 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,'System Proportional',10, $FontPlain); END (* Paint Font *);
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN fontName := $Courier; PaintFont($Handle,fontName); ELSWHEN 202 THEN fontName := $Helvetica; PaintFont($Handle,fontName); ELSWHEN 203 THEN fontName := $SystemProportional; PaintFont($Handle,fontName); ELSWHEN 204 THEN fontName := $SystemMonospaced; PaintFont($Handle,fontName); ELSWHEN 205 THEN fontName := $TimesRoman; PaintFont($Handle,fontName); ELSWHEN 206 THEN fontName := $SymbolSet; PaintFont($Handle,fontName); END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN PaintFont($Handle,fontName); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); END; END (* Main Event *);
PROCEDURE FontExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MainEvent{$TimesRoman}, 0,0,60,20,'Font example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Font Example *);
Définit et affiche les icônes d'une barre d'outils.
FUNCTION WinSetIconBar(VAL buttonList : LIST of $ToolbarNodeRecord): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de fenêtre avec un style $WinIconBar. Il peut s'agir d'une fenêtre standard ou d'une fenêtre défilante. |
iconList | Liste de chaînes ou liste d'enregistrements $ToolbarItem. Dans le cas de la liste de chaînes, chaque chaîne est le nom d'un fichier image s'affichant dans la barre d'icônes. Si vous utilisez l'autre formulaire ($ToolbarNodeRecord), il est possible d'indiquer des attributs supplémentaires tels l'ID menu associé à un bouton de barre d'outils et l'"infobulle" correspondant au bouton de la barre d'outils. |
Une barre d'outils est un contrôle similaire à une barre de menus. Elle apparaît sous la barre de titre et la barre de menus d'une fenêtre. Elle se compose d'une rangée d'icônes qui peuvent être sélectionnées à l'aide du bouton droit de la souris.
Il n'existe pas d'interface clavier vers la barre d'outils ou les icônes y figurant. Lorsque vous cliquez sur une icône, un message menu ($MsgMenu) est envoyé au gestionnaire d'événements de fenêtre. Le premier paramètre d'événement (entier) est l'ID icône.
Remarque : Les icônes sont numérotées de 1 à 99, l'icône la plus à gauche ayant l'ID 1.
Les icônes doivent avoir le format d'icône standard. Les fichiers doivent se trouver dans le réperotire en cours. Dans le cas contraire, le chemin d'accès complet de chaque fichier doit être indiqué. Tout fichier non trouvé ou dans un format incorrect est ignoré. Les ID sont en fait attribués en fonction de la position des icônes dans la liste d'icônes et non en fonction de leur position à l'affichage. La transmission d'une liste inconnue provoque l'effacement et le masquage de la barre d'outils.
Remarque : L'ajout d'une barre d'outils à une fenêtre qui n'en a pas, entraîne l'envoi d'un message $MsgSize à la fenêtre avec la nouvelle taille de la zone utilisateur.
Utilisez le formulaire de liste de chaînes de la manière suivante :
WHEN $Event IS &MsgCreate THEN WinSetIconBar($Handle, {SEARCH,CO','PRINT.ICO'}: LIST OF STRING); END;
Utilisez le formulaire de liste de $ToolbarItem de la manière suivante :
WHEN $Event IS $MsgCreate THEN theList[1].ImageFile:='SEARCH.BMP'; theList[1].ItemID:=204; theList[1].ToolTip:='Search for Text';
theList[2].ImageFile:='PRINT.BMP'; theList[2].ItemID:=106; theList[2].ToolTipText:='Print File';
theList[3].ImageFile:='SAVE.BMP'; theList[3].ItemID:=103; theList[3].ToolTipText:='Save File';
WinSetIconBar($Handle,theList);
END;
Définit les sélections d'une barre de menus de fenêtre.
FUNCTION WinSetMenuBar(VAL whdl: WINDOW, VAL menuList: LIST OF STRING): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
menuList | Liste des chaînes indiquant à un menu de s'afficher sur une barre de menus de fenêtre. Pour plus d'informations sur le format de la liste, reportez-vous à la section Remarques relative à cette instruction. |
WinSetMenuBar permet de définir la barre de menus d'une fenêtre créée à l'aide du style $WinMenu.
La liste des chaînes transmises à WinSetMenuBar indique la totalité de la structure du menu. Les options de menu pricipales (horizontales) et les options secondaires (verticales) sont indiquées. Ces options sont encodées au format suivant : haut vers le bas et de gauche à droite. Les chaînes vides font office de séparateurs. Par exemple, si l'option de menu la plus à gauche est Fichier et que les options de ce menu sont Nouveau, Enregistrer, Enregistrer sous et Quitter, la liste de menus se présente de la manière suivante :
{'Fichier','Nouveau','Enregistrer','Enregistrer ~Sous','Quitter',''}: LIST OF STRING;
La seconde colonne d'options de menu vient ensuite.
Vous pouvez attribuer un tilde (~) à une lettre pour qu'elle devienne le sélecteur de l'option de
menu. Les commutateurs figurant dans le tableau ci-après peuvent être placés au début d'une option de menu
pour obtenir les résultats décrits ci-dessous.
Commutateur | Résultat |
/C | L'option de menu est initialement cochée. |
/D | L'option de menu est initialement désactivée. |
/S | L'option de menu est statique et ne peut pas être sélectionnée. |
/L | L'option de menu n'est pas affichée. Un séparateur de ligne apparaît à sa place. |
/H | Le menu reste ouvert lorsque l'option est sélectionnée. |
// | Une barre oblique (/) est affichée. Aucun autre commutateur n'est appliqué. |
L'ajout d'une barre de menus à une fenêtre n'en possédant pas entraîne l'envoi d'un message $MsgSize à la fenêtre avec la nouvelle taille de la zone utilisateur.
KNOWLEDGEBASE WinMenu; TYPES MainWinRec IS RECORD width: INTEGER; height: INTEGER; fontName: STRING; mousePointer: STRING; statusBar: STRING; END;
CONSTANTS MENU_LIST IS {'File' , '~Quitter', '', (* 101 *) 'Menu', '~Activer', (* 201 *) '~Désactiver', (* 202 *) '/L ', (* Put separator line in menu *) '/C/D~Vérifier', (* 204 start check and disabled *) '', (* Mark end of menu sub menu *) 'Aide', 'A propos de', (* 301 *) '' (* Mark end of help submenu *) }: LIST OF STRING;
ROUTINES PROCEDURE MenuExample;
PRIVATE ROUTINES
EVENT MainEvent(REF mainWinData: MainWinRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN SendMessage($Handle,$MsgClose); ELSWHEN 201 THEN WinMenuEnableItem($Handle,204,TRUE); ELSWHEN 202 THEN WinMenuEnableItem($Handle,204,FALSE); ELSWHEN 204 THEN IF WinMenuItemIsChecked($Handle,204) THEN WinMenuCheckItem($Handle,204,FALSE); ELSE WinMenuCheckItem($Handle,204,TRUE); END; ELSWHEN 301 THEN WinMessageBox($Handle,'About',$MBOK,'Menu example'); END; END; END (* Main Event *);
PROCEDURE MenuExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MainEvent,0,0,60,20, 'Menu example', BitOr($WinBorder,$WinTitle, $WinMenu,$WinMinMax, $WinTaskList,$WinAutoPos, $WinSysMenu)); WinWait(whdlMain); END (* Menu Example *);
Définit le menu en incrustation d'une fenêtre remplaçant tout menu en incrustation existant. Le menu en incrustation apparaît automatiquement lorsque la souris est utilisée de manière conforme à la plateforme. Les sélections du menu en incrustation sont indiquées par le message $MsgMenu.
FUNCTION WinSetPopupMenu ( VAL whdl: WINDOW, VAL menuList: LIST OF 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é. |
menuList | Liste des options de menu de cette fenêtre. |
La liste des chaînes transmises à WinSetPopupMenu indique la totalité de la structure du menu. Les options de menu pricipales (horizontales) et les options secondaires (verticales) sont indiquées. Ces options sont encodées au format suivant : haut vers le bas et de gauche à droite. Les chaînes vides font office de séparateurs. Par exemple, si l'option de menu la plus à gauche est Fichier et que les options de ce menu sont Nouveau, Enregistrer, Enregistrer sous et Quitter, la liste de menus se présente de la manière suivante :
{'Fichier','Nouveau','Enregistrer','Enregistrer ~Sous','Quitter',''}: LIST OF STRING;
La seconde colonne d'options de menu vient ensuite.
Vous pouvez attribuer un tilde (~) à une lettre pour qu'elle devienne le sélecteur de l'option de menu.
Les commutateurs figurant dans le tableau ci-après peuvent être placés au début d'une option de menu pour
obtenir les résultats décrits ci-dessous.
Commutateur | Résultat |
/C | L'option de menu est initialement cochée. |
/D | L'option de menu est initialement désactivée. |
/S | L'option de menu est statique et ne peut pas être sélectionnée. |
/L | L'option de menu n'est pas affichée. Un séparateur de ligne apparaît à sa place. |
/H | Le menu reste ouvert lorsque l'option est sélectionnée. |
// | Une barre oblique (/) est affichée. Aucun autre commutateur n'est appliqué. |
L'ajout d'une barre de menus à une fenêtre n'en possédant pas entraîne l'envoi d'un message $MsgSize à la fenêtre avec la nouvelle taille de la zone utilisateur.
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 popup;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (*Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES MAIN_MENU {'File', '/CNew', '/DExit' }: LIST OF STRING;
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'WinSetPopupMenu Test', $WinDefaultStyle); (* Set the popup menu. The 'New' menu item is initially checked and *) (* the 'Exit' menu item is initially diabled *) WinSetPopupMenu(mainWindow, MAIN_MENU); WinWait(mainWindow);
END;
WinLoadPopupMenu
Définit la position et la taille d'une barre de défilement.
FUNCTION WinSetScrollBar(VAL whdl: WINDOW, VAL scrollBarID, windowSize, dataSize,windowLoc: INTEGER): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
scrollBarID | Libellé de la barre de défilement à définir. Il doit s'agir de $WinVScroll (barre verticale) ou de $WinHScroll (barre horizontale). Si la barre de défilement désignée n'existe pas, aucune action n'est effectuée. Aucune erreur n'est indiquée. |
windowSize | Taille de la fenêtre en unités de données. Ces unités sont arbitraires et dépendent uniquement des paramètres dataSize et windowLoc. Ces paramètres doivent être exprimés dans les mêmes unités. |
dataSize | Taille des données, exprimée dans les unités utilisées pour indiquer la taille de la fenêtre. |
windowLoc | Emplacement dans la partie supérieure ou gauche de la fenêtre, exprimé dans les mêmes unités que les paramètres précédents. |
KNOWLEDGEBASE FileView; CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','e~xit',''}: LIST OF STRING; TYPES EditorData IS RECORD fileName: STRING; yLen : INTEGER; lineCount: INTEGER; pageTop: INTEGER; statusLine: STRING; lines: LIST OF STRING;
END;
ROUTINES PROCEDURE FileView;
PRIVATE ROUTINES
EVENT EditorEvent(REF data: EditorData) IS VARIABLES loc: INTEGER; 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); result := FOpen(editFile, fileName, $Read); IF result <= 0 THEN WinMessageBox($Handle, 'Error', $MBOK + $MBIconError, 'Can not open file ' & fileName); Exit; END; data.lineCount := FReadText(editFile, data.lines); FClose(editFile); data.pageTop := 0; data.statusLine := ' File: ' & fileName; PostMessage($Handle, $MsgPaint); PostMessage($Handle, $MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage( $Handle, $MsgClose ); END;
END (* Process Main Menu *);
PROCEDURE ProcessChar(VALUE character: INTEGER) IS ACTIONS WHEN character IS $KeyDownArrow THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.pageTop + 1; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyUPArrow THEN IF data.pageTop > 0 THEN data.pageTop := data.pageTop - 1; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyPageDown THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.pageTop + data.yLen; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyPageUp THEN IF data.pageTop > 0 THEN data.pageTop := data.pageTop - data.yLen; IF data.pageTop < 0 THEN data.pageTop := 0; END; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyControlPageDown THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.lineCount - data.yLen; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyControlPageUp THEN IF data.pageTop > 0 THEN data.pageTop := 0; PostMessage($Handle, $MsgPaint); END; END; END (* ProcessChar *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle, MENU_LIST); data.lineCount := 0; data.pageTop := 1; data.statusLine := 'File:'; ELSWHEN $MsgSize THEN (* Size Message *) data.yLen := $EventParm(2, INTEGER); WinSetScrollBar($Handle,$WinVScroll,data.lineCount, data.yLen,data.pageTop); ELSWHEN $MsgPaint THEN WinSetScrollBar($Handle,$WinVScroll,data.lineCount, data.yLen,data.pageTop); FOR loc := 1 to data.yLen + 1 DO IF loc + data.pageTop> data.lineCount THEN ExitLoop; END; WinGoToXY($Handle, 1, loc); WinClearEOL($Handle); WinWriteAt($Handle,1,loc,data.lines[ data.pageTop +loc ]); END; WinGoToXY($Handle, 1, loc); WinClearEOW($Handle); ELSWHEN $MsgMenu THEN (* Menu Message *) ProcessMainMenu($MenuSelection); ELSWHEN $MsgChar THEN ProcessChar($EventParm(1, INTEGER)); ELSWHEN $MsgScroll THEN (* Scroll bar *) IF $EventParm(1, INTEGER) =$WinVScroll THEN data.pageTop := $EventParm(2, INTEGER); PostMessage($Handle, $MsgPaint); END; ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,data.statusLine); END; END (* Editor Event *);
PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreate($Desktop,whdl,EditorEvent,0,0,0,0, 'KML File viewer', BitOr($WinBorder,$WinTitle, $WinResize,$WinSysMenu, $WinMenu,$WinVSCroll, $WinStatus,$WinAutoPos, $WinAutoSize,$WinTaskList)); WinWait(whdl); END (* File View *);
WinCreate
Définit le texte de la barre de titre d'un formulaire de boîte de dialogue ou d'une fenêtre.
FUNCTION WinSetTitle(VAL whdl: WINDOW, VAL newTitle: STRING): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la boîte de dialogue ou de la fenêtre dont le texte du titre doit être modifié. |
newTitle | Nouveau titre du formulaire de la boîte de dialogue ou de la fenêtre. |
Cette fonction est également mise en oeuvre sous forme de message pouvant être transmis à un formulaire de boîte de dialogue ou à une fenêtre ($MsgSetTitle).
KNOWLEDGEBASE title;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'If you see this it did not work', $WinDefaultStyle); WinSetTitle(Handle, 'It works!'); WinWait(Handle); END;
Active ou désactive le sablier (pointeur en attente). Cela est effectif dans toutes les fenêtres de l'application.
WinSetWaitPointer ( VAL state : BOOLEAN ) : INTEGER;
Nom de l'argument | Description |
state | La valeur 'True' affiche le sablier alors que la valeur 'False' restaure le pointeur précédent. |
WinSetWaitPointer active ou désactive le sablier en fonction de l'état indiqué. Permet d'indiquer si l'application est occupée ou toujours en cours de traitement.
KNOWLEDGEBASE wait;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreateScrollWindow($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $SystemMonoSpaced, 10, $WinDefaultStyle); WinSetWaitPointer(TRUE); (* Set the pointer to be the wait pointer before doing intensive processing *) (* and change it back afterwards *) WinSetWaitPointer(FALSE); WinWait(mainWindow);
END;
Affiche ou masque une boîte de dialogue ou une fenêtre.
FUNCTION WinShowWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur du formulaire de la boîte de dialogue ou de la fenêtre dont la visibilité doit être modifiée. |
state | Prend la valeur TRUE si la fenêtre doit être "affichée" ou la valeur FALSE si elle doit être "masquée". |
Cette fonction est également utilisée sous forme de message envoyé à une boîte de dialogue ou à une fenêtre ($MsgShow).
KNOWLEDGEBASE title;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'If you see this it did not work', $WinDefaultStyle); WinShowWindow(Handle, FALSE); SysDelay(1000); WinShowWindow(HANDLE, TRUE); WinWait(Handle); END;
Passe l'exécution en mode pause lorsqu'une fenêtre existe.
FUNCTION WinWait(VAL whdl: WINDOW): INTEGER;
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 |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
WinWait est généralement utilisé dans la procédure principale de l'application dans le but d'attendre que la fenêtre principale ne soit plus active.
VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,$NullHandler,0,0,0,0, 'Window Title','',0, BitOr($WinBorder,$WinTitle, $WinResize,$WinSysMenu, $WinAutoPos,$WinAutoSize, $WinTaskList)); WinWait(whdl);
Demande la largeur d'une fenêtre.
FUNCTION WinWidth(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
WinWidth renvoie la largeur en cours de la surface utile de la fenêtre indiquée, exprimée en cellules de caractère.
VARIABLES width: INTEGER; ACTIONS width := WinWidth($Handle);
Ecrit une chaîne dans une fenêtre à la position en cours.
FUNCTION WinWrite(VAL whdl: WINDOW, VAL outputText: LIST OF STRING): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle écrire. Ce descripteur peut faire référence à une fenêtre standard (générique) ou à une fenêtre défilante. |
outputText | Liste de chaînes à afficher. Une seule chaîne est également valide. Cette commande est exécutée pour chaque élément de la liste. |
WinWrite permet d'écrire des informations dans une fenêtre générique ou défilante. Cette fonction ne peut pas être utilisée pour écrire des informations dans une boîte de dialogue.
Recherche de l'emplacement de dessin en cours
TSD Script gère un emplacement de dessin courant pour chaque fenêtre générique et défilante. Le texte écrit par WinWrite apparaît à cet emplacement et l'abscisse de cet emplacement est calculée après l'opération d'écriture. L'emplacement courant peut être déterminé via l'appel des fonctions WinX et WinY.
Utilisation des indicateurs de format
Les indicateurs de format sont en fait des masques de contrôle des données dans lesquels différents bits contrôlent différentes parties du format. WinWrite traite une liste de chaînes vous permettant de contrôler le formatage de l'affichage dans WinWrite et dans d'autres instructions.
En règle générale, toute expression peut être suivie de deux indicateurs de format :
Les indicateurs de format sont séparés de l'expression et les uns des autres par le signe deux-points. Par exemple :
VARIABLES s : STRING; i: INTEGER; r: REAL; b: BOOLEAN; (* true false *) d: DATE; (* right, empty pad, usa *) t: TIME; (* right, empty pad, 24 hour military *) ACTIONS s := 'First Bank'; i := 951; r := 14567.89; d := {2,15,1956}: DATE; t := {11,45,0}: TIME; WinWrite($Handle,s:20); -- outputs 'First Bank' WinWrite($Handle,i:5); -- outputs '951 ' WinWrite($Handle,r:9:2);-- outputs '14567.89 ';
WinWrite($Handle,d:10:$FmtDateMonthDayYear); -- outputs '2/11/1956' WinWrite($Handle,d:10:BitOr($FmtDateMonthDayYear, $FmtDateTruncateCentury); -- outputs '2/11/56 ' WinWrite($Handle,t:7:$FmtTimeAMPM); -- outputs '11:45 AM';
Remarque : Les divers indicateurs de format sont décrits dans la section Indicateurs de format de types de données.
Indicateurs de format pour les nombres réels
L'indicateur de format pour les nombres réels peut également coder le nombre de chiffres figurant à droite du séparateur décimal. Par exemple,
WinWrite($Handle, r :10 : BitOr(2, $FmtLeftJustify));
justifie la sortie à gauche et affiche deux chiffres à droite du séparateur décimal. Par défaut, les nombres réels affichent six chiffres à droite du séparateur décimal.
Formats par défaut des types de données
Il existe des formats par défaut pour les différents types de données. Ces formats par défaut peuvent varier en fonction des pays car les types de données par défaut (dont les types américains) sont fondés sur les paramètres du panneau de configuration international.
Le tableau ci-après indique les formats par défaut des types de données aux Etats-Unis.
Type de données | Format américain par défaut |
chaîne | $FmtRightJustify |
entier | $FmtRightJustify+$FmtIntUngrouped+$FmtBlankPad+$FmtIntSignNegOnly+$FmtIntDecimal |
réel | $FmtRightJustify+$FmtRealUngrouped+$FmtBlankPad+$FmtRealSignNegOnly+
$FmtRealDecimalDot |
booléen | $FmtRightJustify+$FmtBoolTrueFalse |
date | $FmtRightJustify+$FmtDateMonthDayYear+$FmtBlankPad+$FmtDateSlashSeparators+
$FmtDateNumericMonth+$FmtDateFullYear |
heure | $FmtRightJustify+$FmtTimeWithSeconds+$FmtBlankPad+$FmtTimeMilitary |
Les formats par défaut peuvent être modifiés à l'aide des fonctions StringFormat, IntegerFormat, RealFormat, BooleanFormat, DateFormat et TimeFormat.
KNOWLEDGEBASE Clip;
CONSTANTS MENU_REFRESH IS 101; MENU_EXIT IS 102;
ROUTINES PROCEDURE ClipView;
PRIVATE
CONSTANTS MENU_LIST IS {'~File','~Refresh','E~xit',''}: LIST OF STRING; ROUTINES EVENT ClipboardEvent(REF clipBoard: STRING) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); SysGetClipboard(clipBoard); WinWrite($Handle,clipBoard); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS MENU_REFRESH THEN SysGetClipboard(clipBoard); WinClear( $Handle ); WinWrite($Handle,clipBoard); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Clipboard Event *); PROCEDURE ClipView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,ClipboardEvent{''}, 0,0,0,0,'KML Clipboard viewer', '',10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinAutoPos, $WinAutoSize,$WinVScroll, $WinHScroll,$WinTaskList)); WinWait(whdl); END (* Clip View *);
Pour plus d'informations, reportez-vous à la rubrique Data Type Format Flags.
Ecrit une chaîne dans une fenêtre à l'emplacement courant.
FUNCTION WinWriteAt(VAL whdl: WINDOW, VAL xLoc, yLoc: INTEGER, VAL outputText: LIST OF STRING): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle écrire. Ce descripteur peut faire référence à une fenêtre standard (générique) ou à une fenêtre défilante. |
xLoc | Abscisse du début de la chaîne. |
yLoc | Ordonnée du début de la chaîne. |
outputText | Liste de chaînes à afficher. Une seule chaîne est également valide. Cette commande traite chaque élément de la liste. |
WinWriteAt permet d'écrire des informations à un emplacement indiqué dans une fenêtre générique ou défilante. A la fin du traitement, WinWriteAt positionne l'emplacement du dessin courant (c'est-à-dire l'emplacement du curseur) à un caractère à droite du dernier caractère écrit.
WHEN $Event IS $MsgPaint THEN WinWriteAt($Handle,1,1,context.fileName); END;
Ecrit une chaîne dans une fenêtre et positionne le curseur au début de la ligne suivante.
FUNCTION WinWriteLN(VAL whdl: WINDOW, VAL outputText: LIST OF STRING): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle écrire. Ce descripteur peut faire référence à une fenêtre standard (générique) ou une fenêtre défilante. |
outputText | Liste de chaînes à afficher. Une seule chaîne est également valide. Cette commande traite chaque élément de la liste. |
WinWriteLN utilise une boucle FOR implicite : cette fonction écrit la totalité de la liste des chaîne de manière séquentielle.
WinWriteLN est identique à la fonction WinWrite à l'exception près qu'elle positionne le curseur de la fenêtre au début de la ligne suivante.
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 *);
Renvoie l'abscisse de l'emplacement de dessin en cours.
FUNCTION WinX(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
WinX diffère de la fonction WinGetXPos car elle renvoie l'emplacement d'un caractère dans une fenêtre alors que WinGetXPos recherche l'angle supérieur gauche d'une fenêtre ou d'une boîte de dialogue.
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;
WinY
Renvoie l'ordonnée de l'emplacement de dessin en cours.
FUNCTION WinY(VAL whdl: WINDOW): INTEGER;
Nom de l'argument | Description |
whdl | Descripteur de la fenêtre dans laquelle l'opération doit être effectuée. |
WinY diffère de la fonction WinGetYPos car elle renvoie l'emplacement d'un caractère dans une fenêtre alors que WinGetYPos recherche l'angle supérieur gauche d'une fenêtre ou d'une boîte de dialogue.
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;
WinX
Tivoli Service Desk 6.0 Developer's Toolkit - Manuel de référence du langage TSD Script