Tivoli Service Desk 6.0 Developer's Toolkit - Manuel de référence du langage TSD Script
------------------------------------------------------------------------
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
(* Créez une fenêtre déroulante dépendante du bureau
avec traitement des événements par défaut *)
PROCEDURE Example IS
VARIABLES
whdl: WINDOW;
ACTIONS
WinCreateScrollWindow($Desktop, (* La fenêtre est une fenêtre fille
du bureau OS/2 *)
whdl, (* descripteur de retour
de la nouvelle fenêtre *)
$NullHandler, (* Traitement d'événement
par défaut *)
5, 5, 80, 20, (* Emplacement et
taille de la fenêtre *)
'Exemple', (* Titre de la fenêtre *)
'', (* Utilisez la police par défaut
0, (* Par défaut, la
taille du point est ignorée. *)
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 de détails, reportez-vous à la page Messages 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;
Voir également : Codes de touches.
------------------------------------------------------------------------
Crée une boîte de dialogue modale à partir d'un fichier de
définition de boîte de dialogue. Une boîte de dialogue modale
appartient à la fenêtre de l'application principale.
Lorsqu'un appel est envoyé vers une boîte de dialogue modale, il
n'est pas retourné tant que la boîte de dialogue n'a pas été détruite. Si
l'entité père n'est pas le bureau et qu'aucun propriétaire
n'est spécifié, la fenêtre mère est désactivée. Lorsqu'une boîte de
dialogue modale est active, l'utilisateur risque de ne pas pouvoir
intervenir sur les fenêtres
mères ou filles dont elle dépend.
FUNCTION DlgBox(VAL parent: WINDOW, VAL dialogFile: STRING,
VAL EventHandler: EVENT,
REF returnRec: RECORD of ANY): INTEGER;
N'utilisez pas DlgBox lors du traitement d'un
message $MsgDDEInitiate. Si vous commettez cette erreur,
$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 DlgBox lance un
gestionnaire d'événements qui attend une réponse de la file
d'attente des messages.
DlgBox empêche les autres applications d'envoyer des
messages à la file d'attente. Ceci entraîne un blocage
qui verrouille l'interface utilisateur.
Nom de l'argument | Description |
dialogFile | Nom du fichier de définition de boîte de
dialogue. La recherche est effectuée de la manière suivante : 1. Si
un répertoire explicite est indiqué pour le fichier, la recherche se
limite à ce répertoire. |
Si cette stratégie ne permet pas de trouver le fichier, DlgBox
renvoie un message d'erreur indiquant que le fichier est introuvable.
Parallèlement, vous pouvez spécifier le nom de la boîte de
dialogue à afficher. Le nom du formulaire est indiqué selon le format : fileName[formName].
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é $NullHandlerpeut peut être utilisé. Valeur
de retour returnRec. Si l'utilisateur choisit d'annuler la boîte
de dialogue, la valeur
contenue dans la boîte de dialogue est attribuée à
cet enregistrement. Cette attribution s'effectue sur la base des
contrôles dont le nom
correspond à un nom d'élément dans la définition de
l'enregistrement. Si la destruction de la boîte de dialogue a lieu
par une autre méthode, la valeur reste
inchangée. Lorsqu'un gestionnaire d'événements est présent,
l'enregistrement doit être du même type que les paramètres d'instance du gestionnaire
d'événements.
Premier message reçu
Lorsqu'une boîte de dialogue est créée, les messages ci-après sont reçus
dans l'ordre indiqué :
* $MsgEnterField positionne le curseur sur le premier contrôle défini dans l'ordre
des onglets.
* $MsgInitialize initialise les contrôles
qui renferment des données. Un message
$MsgInitialize distinct
est reçu pour chaque contrôle contenant les données de la boîte de dialogue.
* $MsgCreate crée physiquement la boîte de dialogue.
Troncature des espaces
Les espaces sont tronqués dans un contrôle de boîte de dialogue
lorsque tous les espaces du contrôle sont vides. Cette situation peut
se produire si
l'utilisateur saisit une chaîne d'espaces vides dans le contrôle,
ou que le fichier de définition de boîte de dialogue contient une
chaîne vide
destinée à être insérée dans le contrôle. Dans les deux cas, si la
valeur du contrôle vide est appelée, c'est la valeur
$Unknown qui est renvoyée.
Pour créer une boîte de dialogue modale, utilisez l'instruction de
création DlgBox. La propriété d'une boîte de
dialogue modale revient à
la fenêtre principale de l'application. Lorsqu'un appel est envoyé
vers une boîte de dialogue modale, il n'est
pas retourné tant que la boîte de dialogue
n'a pas été détruite. Si l'entité mère n'est pas le bureau et
qu'aucun propriétaire n'est défini, la fenêtre mère est désactivée.
Lorsqu'une boîte de dialogue modale est active, l'utilisateur risque
de ne pas pouvoir intervenir sur les fenêtres
mères ou filles.
Pour créer une boîte de dialogue non-modale, utilisez
l'instruction DlgCreate. Lorsqu'un appel est envoyé
vers une
boîte de dialogue non modale, il est renvoyé immédiatement. La
fenêtre continue d'exister aussi longtemps qu'elle n'a pas été
explicitement détruite.
La boîte de dialogue fournit un modèle permettant à l'utilisateur
de saisir des données. Des zones de texte et contrôles divers
sont créés à partir
du fichier de définition de la boîte de dialogue. Chacune des
zones de texte correspond à un champ de la base de données et
possède un nom unique. Une ou plusieurs
zones de texte peuvent renvoyer à des champs de données d'instance
de la boîte de dialogue. Les zones de texte sont reliées
à des champs de données d'instance qui portent le même nom.
Lorsqu'une zone de texte est mise à jour dans une boîte de
dialogue par l'action de l'utilisateur ou par l'application, le champ
de données d'instance correspondant est également mis à jour.
Le système met en oeuvre une grande variété de conversions de types
qui obligent les données de la boîte de dialogue à correspondre à
celles des données d'instance.
Lorsqu'un gestionnaire d'événements est présent,
l'application reçoit une notification des actions entreprises par
l'utilisateur. Il lui est alors permis de répondre
et de modifier ces actions.
Sauf spécification contraire, les deux paramètres d'événement initiaux qui apparaissent dans tous les messages de boîte de dialogue sont les suivants :
* Le premier paramètre d'événement (de type Integer) est l'ID du contrôle sélectionné. Il est possible d'y accéder par le biais de l'alias $FieldID.
* Le deuxième paramètre d'événement (chaîne) correspond au nom du contrôle sélectionné. Il est possible d'y accéder par le biais de l'alias $FieldName.
Pour connaître la liste des messages susceptibles d'être reçus par les boîtes de dialogue, reportez-vous à la section "Messages pouvant être reçus par des boîtes de dialogue" du présent guide.
KNOWLEDGEBASE DlgExample;
TYPES
DlgData IS RECORD
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
NOTHING; (* Envoyé une fois que la boîte de dialogue a été créée *)
(* Comporte les paramètres pseudo $FormFile et $FormName *)
ELSWHEN $MsgDestroy THEN
NOTHING; (* Envoyé lorsque la boîte de dialogue est sur le point d'être détruite *)
ELSWHEN $MsgHelp THEN
NOTHING; (* Envoyé lorsque l'utilisateur appuie sur la touche d'aide *)(* et qu'aucune aide n'est configurée *)
(* pour le champ ou le formulaire concerné *)
ELSWHEN $MsgEnterField THEN
NOTHING; (* Envoyé chaque fois que le nouveau champ *)
(* devient le champ actif. L'action peut être refusée *)
(* en retournant la valeur 0 *)
ELSWHEN $MsgExitField THEN
NOTHING; (* Envoyé chaque fois que le champ est sur le point *)
(* de devenir inactif *)
(* L'action peut être réfutée en renvoyant la valeur 0 *)
ELSWHEN $MsgAccept THEN
NOTHING; (* Envoyé lorsque l'utilisateur valide la boîte de
(* dialogue. L'action de validation peut être refusée *)
(* en retournant la valeur 0 *)
ELSWHEN $MsgCancel THEN
NOTHING; (* Envoyé lorsque l'utilisateur annule la boîte de dialogue.*)(* L'action d'annulation peut être refusée *)
(* en retournant la valeur 0 *)
ELSWHEN $MsgSelect THEN
NOTHING;(* Envoyé lorsqu'une modification a été détectée dans une *)
(* valeur de champ. *)
(* Les modifications effectuées par l'utilisateur dans les champs
(* d'édition et de saisie multi-lignes sont détectés lorsque *)(* l'utilisateur quitte le champ. Les autres *)
(* modifications sont détectées immédiatement. *)
(* Pour refuser la modification, renvoyez la valeur 0. *)
(* Les données d'instance sont mises à jour afin d'incorporer
(* la nouvelle valeur *)
(* du champ. Le troisième paramètre d'événement contient l'ancienne valeur, *)
(* tandis que le quatrième inclut la nouvelle *)
ELSWHEN $MsgMandField THEN
NOTHING; (* Envoyé lorsque l'utilisateur valide la boîte de dialogue et qu'un champ obligatoire
(* ne comporte aucune valeur. L'action par défaut du système *)
(* consiste à afficher un message et à abandonner *)
(* l'action de validation. Si le gestionnaire d'événements *)
(* ne renvoie pas la valeur 1 (par défaut), le *)
(* message ne s'affiche pas. Si la valeur 0 est *)
(* renvoyée, l'action de validation est traitée *)
(* et un appel $MsgAccept est envoyé. *)
ELSWHEN $MsgUser THEN
NOTHING; (* Tout message défini par l'application *)
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
dlghdl: WINDOW;
fields: DLGDATA;
ACTIONS
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* Exemple de boîte de dialogue *);
Code retour | Description |
1 | Opération ayant abouti. |
0 | Abandon par 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 | Mémoire 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. |
Pour plus d'informations sur la création des fichiers de définition de boîtes de dialogue, reportez-vous au manuel Tivoli Service Desk 6.0 Developer's Toolkit - Guide du concepteur d'interface.
------------------------------------------------------------------------
Crée une boîte de dialogue non modale à partir d'un fichier de définition de boîte de dialogue.
FUNCTION DlgCreate(VAL parent: WINDOW, REF whdlDialog: WINDOW,
VAL dialogFile: STRING,
VAL EventFunction: EVENT): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlParent | Ce paramètre spécifie la fenêtre mère de la boîte de dialogue. |
whdlDialog | Descripteur de la nouvelle fenêtre est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
dialogFile | Nom du fichier de définition de boîte de
dialogue. La recherche est effectuée de la manière suivante : 1. Si un répertoire explicite est indiqué pour le fichier, la recherche se limite à ce répertoire. 2. La recherche porte sur les répertoires explicitement spécifiés sur la ligne de commande. 3. La recherche porte sur le répertoire de travail en cours. 4. La recherche est effectuée dans le répertoire de l'interpréteur de script. 5. La recherche porte sur les répertoires indiqués dans la variable d'environnement SAIPATH. 6. (OS/2 uniquement) La recherche porte sur les répertoires indiqués dans la variable d'environnement DPATH. 7. La recherche porte sur les répertoires indiqués dans la variable d'environnement PATH. Si cette stratégie ne permet pas de trouver le fichier, DlgBox renvoie un message d'erreur indiquant que le fichier est introuvable. Parallèlement, vous pouvez spécifier le nom de la boîte de dialogue à afficher. Le nom du formulaire est indiqué selon le format : fileName[formName]. |
EventFunction | 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é. |
Lorsqu'une boîte de dialogue est créée, les messages ci-après sont reçus dans l'ordre indiqué :
1. $MsgEnterField positionne le curseur sur le premier contrôle défini dans l'ordre
2. $MsgInitialize initialise les contrôles qui
renferment des données. Un message $MsgInitialize
distinct
est reçu pour chaque contrôle contenant les données de
la boîte de dialogue.
3. $MsgCreate crée physiquement la boîte de dialogue.
Pour créer une boîte de dialogue modale,
utilisez l'instruction de création DlgBox. La
propriété d'une boîte de dialogue modale revient à
à la fenêtre principale de l'application. Lorsqu'un appel est envoyé
vers une boîte de dialogue modale, il n'est
pas retourné tant que la boîte de dialogue
n'a pas été détruite. Si l'entité mère n'est pas le bureau et
qu'aucun propriétaire n'est défini, la fenêtre mère est désactivée.
Lorsqu'une boîte de dialogue modale est active, l'utilisateur risque
de ne pas pouvoir intervenir sur les fenêtres
mères ou filles.
Pour créer une boîte de dialogue non-modale, utilisez
l'instruction DlgCreate. Lorsqu'un appel
est envoyé vers une
boîte de dialogue non modale, il est renvoyé immédiatement. La
fenêtre continue d'exister aussi longtemps
qu'elle n'a pas été explicitement détruite.
La boîte de dialogue fournit un modèle permettant à
l'utilisateur de saisir des données. Divers contrôles tels que
des zones de texte sont
spécifiés dans le fichier de définition de boîte de dialogue. Chaque
contrôle possède un nom unique. Chacun d'eux peut renvoyer
à des champs de base de données. La base de données fournit les
données d'instance nécessaires à la boîte de dialogue. Les noms .df
des
contrôles liés à la base de données doivent être les mêmes que ceux
des champs de données d'instance.
Lorsqu'un contrôle de boîte e dialogue est mis à jour par l'action de l'utilisateur ou par l'application,
le champ de données d'instance correspondant est également mis à jour.
Le système met en oeuvre une grande variété de conversions de types
qui obligent les données de la boîte de
dialogue à correspondre à celles des données
d'instance. Lorsqu'un gestionnaire d'événements est présent,
l'application reçoit une notification des actions entreprises par
l'utilisateur. Il lui est alors permis
de répondre et de les modifier.
Les espaces sont tronqués dans un contrôle de boîte de dialogue
lorsque tous les espaces du contrôle sont vides. Cette situation
peut se produire si
l'utilisateur saisit une chaîne d'espaces vides dans le contrôle, ou
que le fichier de définition de boîte de dialogue contient
une chaîne vide
Dans les deux cas, si la valeur du contrôle vide est appelée,
c'est la valeur $Unknown qui est renvoyée.
Sauf spécification contraire, les deux paramètres d'événement initiaux qui apparaissent dans tous les messages de boîte de dialogue sont les suivants :
Pour plus d'informations sur la création des fichiers de définition de boîtes de dialogue, reportez-vous au manuel
Tivoli Service Desk 6.0 Developer's Toolkit - Guide du concepteur d'interfaces (Interface Designer)
------------------------------------------------------------------------
Effectue le chargement d'un sous-formulaire à partir d'un fichier de formulaire, et affiche celui-ci dans le contexte d'un formulaire de dialogue existant.
FUNCTION DlgCreateSubForm(VAL whdl:WINDOW,
REF SubFormHandle: WINDOW,
VAL formSpec: STRING,
VAL EventHandler: EVENT,
VAL xPos: INTEGER,
VAL yPos: INTEGER
): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
EventFunction | 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é. |
EventHandler | Gestionnaire d'événements chargé de traiter les événements générés par le nouveau sous-formulaire. Si aucun traitement d'événement n'est requis, le mot clé $NullHandler peut être utilisé. |
formSpec | Spécification de formulaire relative au sous-formulaire contenu dans le formulaire "FILE[FORM_NAME]". |
SubFormHandle | Le descripteur du nouveau sous-formulaire est renvoyé dans ce paramètre. En cas d'erreur, la variable prend la valeur $Unknown (inconnu). |
whdl | Formulaire de dialogue parent du nouveau sous-formulaire |
xPos | Abscisse (x) de l'angle supérieur gauche du nouveau sous-formulaire. Cette coordonnée est relative au coin supérieur gauche du formulaire de dialogue parent. |
yPos | Ordonnée (y) de l'angle supérieur gauche du nouveau sous-formulaire. Cette coordonnée est relative au coin supérieur gauche du formulaire de dialogue parent. |
WHEN $Event IS $MsgCreate THEN
DlgCreateSubForm($Handle, instanceData.theSubForm, 'screens[theSubForm]', SubFormHandler, 3, 50);
END;
Pour plus d'informations sur la création des fichiers de définition de boîtes de dialogue, reportez-vous au manuel Tivoli Service Desk 6.0 Developer's Toolkit - Guide du concepteur d'interface.
------------------------------------------------------------------------
Supprime une page d'un bloc-notes ou d'un formulaire existant.
FUNCTION DlgDeletePage ( VAL PARENT : WINDOW,
VAL NOTEBOOKID : STRING,
VAL PAGEID : STRING ) : INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
Parent | Descripteur de fenêtre qui correspond au formulaire contenant le bloc-notes. |
NotebookID | Identificateur du bloc-notes (à partir du fichier de définition .df) |
PageID | Identificateur de la page à supprimer (à partir du fichier de définition .df) |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES
(* Variable globale contenant le descripteur de fenêtre de la boîte de dialogue *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* Créez un dialogue à l'aide du formulaire PAGE_MAIN de dlgpage.df *)
(* PAGE_MAIN contient un sous-formulaire comportant le bloc-notes PAGE_NOTEBOOK en tant que formulaire de dépendance *)
(* PAGE_NOTEBOOK dispose de deux onglets *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* Supprimez la deuxième page du bloc-notes. *)
(* Cette page contient ID FORM_TAB2 *)
DlgDeletePage(mainWindow, 'PAGE_NOTEBOOK', 'FORM_TAB2');
WinWait(mainWindow);
END;
------------------------------------------------------------------------
Lance une requête sur la valeur d'un contrôle de boîte de dialogue.
FUNCTION DlgFieldValue(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF fieldValue: ANY): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
fieldValue | Renvoie la valeur de contrôle demandée. Les données sont converties vers le type du paramètre, tandis que la valeur résultante est attribuée à ce dernier. Certaines conversions produisent parfois des résultats incohérents. Si le contrôle est du type SQLManage ou une boîte à liste, le paramètre complémentaire peut être un enregistrement ou une liste de valeurs entières. L'action est effectuée successivement pour chacun des contrôles contenus dans l'enregistrement. Si le contrôle permet d'effectuer des sélections multiples, comme dans le cas d'une boîte à liste ou d'une table, et que le paramètre complémentaire est une variable unique, c'est le premier élément qui est renvoyé. Tous les éléments sont renvoyés dans le cas ou ce paramètre est une liste de variables. |
Les espaces sont tronqués dans un contrôle de boîte de dialogue
lorsque tous les espaces du contrôle sont vides. Cette situation peut
se produire si
l'utilisateur saisit une chaîne d'espaces vides dans le contrôle, ou
que le fichier de définition de boîte de dialogue
contient une chaîne vide. Dans les deux cas, si la valeur du contrôle
vide est appelée,
c'est la valeur
$Unknown qui est renvoyée.
KNOWLEDGEBASE DlgField;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PERSONNEL ******** *)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
names: SQLDATA;
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo
$FieldID, *)
(* et $FieldName *)
WHEN $Event IS $MsgSelect THEN
IF $FieldName = 'insertButton' THEN
DlgFieldValue ( $Handle, 'sql_data', names );
IF DlgBox( $Desktop,'addDlg', $NullHandler{names},
names ) > 0
THEN
DlgListBoxInsert( $Handle, 'namesTable', names );
SQLInsert( 'names', names );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
Lance une requête sur le texte en vigueur dans un bouton.
FUNCTION DlgGetButtonText (VAL whdlDialog: WINDOW,
VAL fieldName: String,
REF buttonText STRING): Integer;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre d'une boîte de dialogue. |
FieldName | Nom du contrôle relatif au bouton sur lequel est lancée la requête de texte. |
ButtonText | Texte renvoyé pour le bouton. |
KNOWLEDGEBASE GetButton;
TYPES
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
handle : WINDOW;
text : STRING;
ACTIONS
DlgCreate($Desktop,
handle,
'sample.dfc[sample]',
$NullHandler);
DlgGetButtonText(handle, 'test_button', text);
WinMessageBox(handle, 'Texte du bouton', $MBOK,
text);
WinWait(handle);
END;
------------------------------------------------------------------------
Extrait le texte sélectionné depuis une zone de texte contenue dans une boîte de dialogue.
FUNCTION DlgGetSelectedText(REF whdlDialog: WINDOW, REF fieldName: STRING,
REF selectedText: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
selectedText | Cet argument renvoie le texte sélectionné dans une zone de texte. Si aucun texte n'est sélectionné, la valeur renvoyée est une chaîne de longueur nulle. En cas d'erreur, la chaîne renvoyée prend une valeur inconnue. |
KNOWLEDGEBASE dlgform;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES
(* Variable globale contenant le descripteur de fenêtre de la boîte de dialogue *)
mainWindow : WINDOW;
ROUTINES
EVENT MainEvent is FORWARD;
PROCEDURE Main IS
ACTIONS
(* Créez la boîte de dialogue en utilisant FORM_DLG dans le fichier dlgform.df *)
(* FORM_DLG comporte un paramètre EntryField identifié par CONTROl_TEXT, *)
(* ainsi qu'un bouton désigné par BUTTON_TEXT *)
DlgCreate($Desktop, mainWindow, 'dlgform[FORM_DLG]', MainEvent);
WinWait(mainWindow);
END;
EVENT MainEvent IS
VARIABLES
selString : STRING;
ACTIONS
(* Lorsque l'utilisateur appuie sur le bouton, le texte sélectionné à partir de entryfield *)
(* s'affiche dans une boîte de message. *)
WHEN $Event IS $MsgSelect THEN
IF $fieldName = 'BUTTON_TEXT' THEN
DlgGetSelectedText(mainWindow, 'CONTROL_TEXT', sel String);
WinMessageBox(mainWindow, 'Texte sélectionné', $MBOK, selString);
END;
END;
END;
------------------------------------------------------------------------
Insère une nouvelle page, issue d'un fichier .dfc, dans un bloc-notes ou un formulaire existant. Le gestionnaire d'événement et les données d'instance existants sont appliqués dans le nouveau formulaire.
FUNCTION DlgInsertPage (VAL FORM : WINDOW
VAL NotebookId : STRING
VAL PageId : STRING
VAL FormSpec : STRING
VAL TabName : STRING
VAL Position : INTEGER
): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
Formulaire | Formulaire à partir duquel la nouvelle page est insérée. |
NotebookId | Identifiant du bloc-notes dans lequel la page est insérée. |
PageId | Identifiant de la page qui est insérée. |
FormSpec | Spécification de formulaire relative au sous-formulaire contenu dans le formulaire "FILE[FORM_NAME]. |
TabName | Texte de l'onglet correspondant à la page insérée. |
Position | Emplacement de l'onglet inséré, pris parmi les autres onglets. |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES
(* Variable globale contenant le descripteur de fenêtre de la boîte de dialogue *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* Créez un dialogue à l'aide du formulaire PAGE_MAIN de dlgpage.df *)
(* PAGE_MAIN contient un sous-formulaire comportant le bloc-notes PAGE_NOTEBOOK en tant que formulaire de dépendance *)
(* PAGE_NOTEBOOK dispose de deux onglets *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* Insérez le formulaire FORM_TAB3, à partir de dlgpage.df, dans le bloc-notes spécifié *)
(* avec l'ID PAGE_NOTEBOOK après la dernière page. L'identifiant de cet onglet *)
(* sera 'Onglet 3' *)
DlgInsertPage(mainWindow, 'PAGE_NOTEBOOK', '', 'dlgpage[FORM_TAB3]', 'Onglet 3', $After);
WinWait(mainWindow);
END;
------------------------------------------------------------------------
Insère une chaîne après le curseur, dans une zone de texte, une boîte à liste ou une boîte de dialogue mixte.
FUNCTION DlgInsertString(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL insertString: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
insertString | Chaîne à insérer dans le contrôle, à l'emplacement du curseur. Le texte sélectionné est remplacé par le texte inséré. |
Le texte sélectionné est remplacé par le texte inséré.
KNOWLEDGEBASE DlgIns_text;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PERSONNEL ******** *)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
insertString: STRING;
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo $FieldID *)
(* et $FieldName *)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyFn2 THEN
(* Recherchez la touche de raccourci F2 *)
(* Définissez l'invite de saisie du texte par l'utilisateur *)
IF WinEditField( $Desktop, insertString, 0, 0, 30,
'Veuillez saisir le texte à insérer',
$WinAutoPos + $WinBorder
+ $WinTitle ) > 0
THEN
(* Le champs doit être du type MultiLineEditor, Entry Field ou ComboBox *)
DlgInsertString( $Handle, 'text_field', insertString );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
Vous permet de préciser si un contrôle est activé ou non dans une boîte de dialogue.
FUNCTION DlgIsItemEnabled (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF enabledState: BOOLEAN):
Integer;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue |
fieldName | Nom du contrôle soumis au test (état activé ou désactivé). |
enabledState | TRUE lorsque le contrôle est activé, FALSE dans le cas contraire. |
KNOWLEDGEBASE DlgEnabl;
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
Handle : WINDOW;
enabled : BOOLEAN;
ACTIONS
DlgCreate($Desktop,
Handle,
'dlgenabl[sample]',
$NullHandler);
(* Activer le bouton, vérifier le statut du bouton, afficher
le résultat. *)
DlgSetEnabled(Handle, 'test_button', TRUE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Statut du bouton', $MBOK,
enabled);
(* Désactiver le bouton, vérifier le statut du bouton, afficher
le résultat. *)
DlgSetEnabled(Handle, 'test_button', FALSE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Statut du bouton', $MBOK,
enabled);
WinWait(Handle);
END;
------------------------------------------------------------------------
Efface toutes les valeurs contenues dans les zones de texte, contrôles SQLManage ou dans les tables.
FUNCTION DlgListBoxClear(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Liste des noms des contrôles contenus dans la boîte de dialogue concernée. Le nom du contrôle peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. L'exécution de la commande a lieu pour chacun des contrôles qui figurent dans la liste. La valeur correspondant au nombre de contrôles traités est renvoyée. En cas d'erreur, le traitement est interrompu. Si une erreur survient lors du traitement du premier contrôle, le code correspondant est renvoyé par l'instruction. |
Si une valeur est en cours de sélection lorsque la boîte à liste
est effacée, le système envoie une instruction
$MsgSelect (ou $MsgInitialize). Etant
donné que la valeur sélectionnée
n'existe plus, le refus de ce message n'a aucune conséquence.
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'nouvel élément 1', 'nouvel élément 2', 'nouvel élément 3' }: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Valeur initiale'
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialisation du message', $MBYesNo,
'Ancienne valeur = ' & $EventParm( 3, STRING ) &
'Nouvelle valeur = ' & $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'nouvel élément' );
DlgListBoxInsert( $Handle, 'test_list_box',
itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30, 'Nouvelle
valeur ?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'Nouvel index ?',
$WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle,
'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Index des boîtes à liste', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
data: FIELDREC;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist', DlgEvent, {data});
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $MBOK + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
Efface toutes les valeurs contenues dans les zones de texte, contrôles SQLManage ou dans les tables.
FUNCTION DlgListBoxDelete(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
Lorsque l'élément sélectionné est supprimé d'une boîte à liste,
une instruction $MsgSelect (ou $MsgInitialize)
est envoyée, accompagnée de la valeur
$Unknown. Du fait que la valeur sélectionnée
précédemment n'existe plus, le refus de ce message n'a aucune conséquence.
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'nouvel élément 1', 'nouvel élément 2', 'nouvel élément 3' }: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Valeur initiale' )
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialisation du message', $MBYesNo,
'Ancienne valeur = ' & $EventParm( 3, STRING )
& '' 'Nouvelle valeur = '
& $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'nouvel élément' );
DlgListBoxInsert( $Handle, 'test_list_box',
itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box', listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,
'Nouvelle valeur ?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'Nouvel index?', $WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
data: FIELDREC
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent, {data});
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $MBOK + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
Lance une requête concernant l'index de l'élément sélectionné dans une boîte à liste, dans SQLManage ou dans un contrôle de table.
FUNCTION DlgListBoxIndex(VAL whdlDialog : WINDOW,
VAL fieldName : STRING
): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'nouvel élément 1', 'nouvel élément 2', 'nouvel élément 3' }: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'Init value' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialisation du message',
$MBYesNo, 'Ancienne valeur' &
$EventParm( 3, STRING ) &
'' 'Nouvelle valeur = ' &
$EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'nouvel élément' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,'Nouvelle valeur ?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box', listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30, 'Nouvel index ?',
$WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Index de boîte à liste', $MBOK,
DlgListBoxIndex( $Handle, 'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $MBOK + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
Insère une valeur ****** a value into any text box, SQLManage, or table control.
FUNCTION DlgListBoxInsert(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newValues: LIST OF ANY): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
newValue | Valeur ou liste de valeurs à insérer dans la
boîte à liste. Chaque élément de la liste est converti sous forme de
chaîne, puis inséré dans la boîte à liste. L'insertion commence
après l'élément sélectionné. Lorsqu'aucun élément n'est sélectionné,
la nouvelle valeur est insérée à la fin. Il est possible d'insérer un
attribut relatif à l'ordre de tri. Cet attribut se substitue au
point d'insertion. OS/2 assure la prise en charge du tri par ordre croissant ou décroissant. Windows prend en charge uniquement l'ordre croissant. Les ordres de tri ne sont pas pris en charge dans le cas des contrôles de tables. En effet, dans ces derniers cas, le paramètre peut prendre la forme d'un enregistrement ou d'une liste de chaînes. Les noms de champs d'enregistrement correspondent aux noms de champ des colonnes. Lorsqu'un nom de champ de colonne n'équivaut pas à celui d'un enregistrement, la colonne reste vide. |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'nouvel élément 1', 'nouvel élément 2', 'nouvel élément 3' }: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Valeur initiale' )
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialisation du message',
$MBYesNo, 'Ancienne valeur = ' &
$EventParm( 3, STRING ) & ''
'Nouvelle valeur = ' &
$EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'nouvel élément' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30, 'Nouvelle valeur ?',
$WinAutoPos +
$WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'Nouvel index ?',
$WinAutoPos + $WinBorder +
$WinTitle);
DlgSetListBoxIndex( $Handle, 'test_list_box',
index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist', DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $MBOK + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
Met à jour la valeur sélectionnée pour un contrôle SQLManage ou un contrôle de table.
FUNCTION DlgListBoxUpdate(VAL whdlDialog: WINDOW,
VAL fieldName: STRING, VAL
updateValue: ANY): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
updateValue | L'enregistrement ou la liste de chaînes contenu(e) dans un contrôle SQLManage ou un contrôle de table est remplacée par la valeur de ce paramètre. Les enregistrements de champs correspondent aux noms de colonne. Toute colonne qui ne correspond pas à un champ d'enregistrement est laissée vide. Si aucun enregistrement n'est sélectionné, une erreur est renvoyée pour indiquer que le champ est introuvable. |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'nouvel élément 1', 'nouvel élément 2', 'nouvel élément 3' }: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'Valeur initiale' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialisation du message', $MBYesNo,
'Ancienne valeur = ' & $EventParm( 3, STRING ) & ''
'Nouvelle valeur = ' & $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'nouvel élément' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box', listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,
'Nouvelle valeur ?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'Nouvel index ?', $WinAutoPos
+ $WinBorder + $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box',
index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Index de boîte à liste', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $MBOK + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog box );
END;
------------------------------------------------------------------------
Effectue le chargement à partir d'un fichier .df vers un contrôle de sous-formulaire existant. (Tout formulaire existant est remplacé.)
FUNCTION DlgLoadSubForm( VAL dialog : WINDOW,
VAL subform : STRING,
VAL resource : STRING, ) : INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
subform | Nom du contrôle de sous-formulaire dans lequel ne nouveau formulaire est chargé. |
resource | Référence à la chaîne de ressource au format standard. |
KNOWLEDGEBASE dlgsub;
ROUTINES
PROCEDURE Main;
(* ***** PERSONNEL ***** *)
PRIVATE
VARIABLES
(* Variable globale contenant le descripteur de fenêtre de la boîte de dialogue *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
DlgCreate($Desktop, mainWindow, 'dlgsub[FORM_MAIN]', $NullHandler);
(* Charge le formulaire FORM_NEW depuis le fichier dlgsub.df vers le contrôle du sous-formulaire *)
(* CONTROL_SUBFORM situé sur le formulaire en cours *)
DlgLoadSubForm(mainWindow, 'CONTROL_SUBFORM', 'dlgsub[FORM_NEW]');
WinWait(mainWindow);
END;
------------------------------------------------------------------------
Lance une requête sur les colonnes déclarées d'un contrôle SQLManage ou d'un contrôle de table.
FUNCTION DlgQueryColumnNames(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF columnNames LIST OF STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
columnName | Liste de chaînes dans laquelle sont renvoyés les noms de colonnes déclarées pour le contrôle SQLManage ou le contrôle de table. Les noms de colonne sont renvoyés dans le même ordre que celui où celles-ci ont été déclarées. |
Comme indiqué dans le présent exemple, WinWriteLN écrit de manière successive la liste intégrale des chaînes.
KNOWLEDGEBASE DlgCols;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PERSONNEL *********)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
columnNames: LIST OF STRING;
whdl: WINDOW;
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo $FieldID
et $FieldName *)
WHEN $Event IS $MsgCreate THEN
DlgQueryColumnNames( $Handle, 'sql_manage_field',
columnNames );
WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
0, 0, 30, 12,
Column Names', $TimesRoman, 12,
$WinBorder + $WinTitle +
WinResize + $WinMinMax +
$WinHScroll + $WinVScroll
+ $WinSysMenu + $WinAutoPos );
WinWriteLN( whdl, columnNames );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
Lance une requête sur le nombre d'éléments contenus dans une boîte à liste, une boîte de dialogue mixte, un contrôle de table ou dans SQLManage.
FUNCTION DlgQueryItemCount (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF itemCount: INTEGER): Integer;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre d'une boîte de dialogue |
fieldName | Nom de champ du contrôle sur lequel est lancée la requête relative au nombre d'éléments. |
itemCount | Une fois l'appel de fonction effectué, itemCount conserve le nombre d'éléments contenus dans le contrôle. |
Cette fonction ne peut être activée que sur des contrôles contenant des listes de données (boîte à liste, boîte de dialogue mixte, contrôle de table ou SQLManage)
KNOWLEDGEBASE QueryCnt;
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
Handle : WINDOW;
MyList : LIST OF STRING;
Count : INTEGER;
ACTIONS
DlgCreate($Desktop,
Handle,
'querycnt[sample]',
$NullHandler);
ListInsert(MyList, 'Elément n° 1');
DlgListBoxInsert(Handle, 'list_box', MyList);
DlgQueryItemCount(Handle, 'list_box', Count);
WinMessageBox(Handle, 'DlgQueryItemCount', $MBOK,
Comptage & ' élément(s).');
WinWait(Handle);
END;
------------------------------------------------------------------------
Lance une requête sur le contenu d'une ligne incluse dans une boîte à liste, une boîte de dialogue mixte ou une table.
FUNCTION DlgQueryRowData (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL index: INTEGER,
REF rowData: ANY ) : INTEGER
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. |
index | Index de la ligne dont les données doivent être connues. |
rowData | Conserve la valeur de contrôle demandée. Dans le cas des contrôles de type LISTBOX et COMBOBOX, il convient que ce paramètre adopte le type STRING. Dans le cas des contrôles de table et des contrôles SQLManage, il convient que ce paramètre soit du type RECORD. |
Cette fonction ne peut être activée que sur des contrôles contenant des listes de données (boîte à liste, boîte de dialogue mixte ou table).
KNOWLEDGEBASE MCLB;
TYPES
TABLEREC IS RECORD
System : STRING;
Component : STRING;
Item : STRING;
Module : STRING;
END;
EVENT DlgEvent(REF form : FORMREC) IS
VARIABLES
rowdata : TABLEREC;
retval : INTEGER;
ACTIONS
WHEN $Event IS $MsgSelect THEN
IF $Fieldname = 'GetRow' THEN
-- Extraire les données de la ligne numéro 5
retval := DlgQueryRowData($handle, 'TABLE1', 5, rowda ta);
IF (retval = 1) THEN
WinMessageBox($handle, 'Données de la ligne&', $MBOK,
'La valeur système pour la ligne 5 est ' &
rowdata.System);
END;
END;
END;
END;
------------------------------------------------------------------------
Déplace le curseur vers un contrôle spécifié.
FUNCTION DlgSelectField(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
Lorsque l'utilisateur déplace le curseur vers un nouveau
contrôle, des instructions $MsgExitField et
$MsgEnterField sont générées.
Le gestionnaire d'événements
de la boîte de dialogue peut refuser l'un de ces messages et
provoquer l'échec de l'opération.
KNOWLEDGEBASE DlgSLCT;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PERSONNEL *********)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo $FieldID et $FieldName *)
WHEN $Event IS $MsgCreate THEN
(* Sélectionnez le champ initial pour le curseur *)
DlgSelectField( $Handle, 'startField' );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
Change le libellé d'un bouton.
FUNCTION DlgSetButtonText(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL ButtonText: STRING): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
ButtonText | Nouveau libellé du bouton. Le contrôle doit être matérialisé par un bouton. |
KNOWLEDGEBASE DlgButton;
TYPES
DlgData IS RECORD
allowEdit: BOOLEAN;
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
IF NOT fields.allowEdit THEN
DlgSetButtonText($Handle,'editButton','Afficher');
(* SAMPLEFIELD doit être du type MultiLineEditor, champ de saisie ou boîte de dialogue mixte *)
DlgSetReadonly($Handle,'SAMPLEFIELD',TRUE);
END;
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
fields: DlgData;
ACTIONS
fields.allowEdit := FALSE;
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* Exemple de boîte de dialogue *);
------------------------------------------------------------------------
Définit l'état activé ou désactivé d'un contrôle.
FUNCTION DlgSetEnabled(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de
dialogue dirigée par la commande. Ce nom peut être spécifié dans le
concepteur d'interface, ou dans l'instruction DEFINE du fichier de
définition de boîte de dialogue. L'indication du nom n'impose
pas le respect de la distinction majuscules-minuscules. L'exécution de
la commande a lieu pour chaque contrôle dont le nom figure dans la
liste. La valeur correspondant au nombre de contrôles traités est
renvoyée. La fin du traitement a lieu lorsqu'une erreur est
enregistrée. La variable de système $DlgError est fixée sur le code de l'erreur. Si une erreur survient lors du traitement du premier contrôle, le code correspondant est renvoyé par l'instruction. |
newState | Nouveau statut du contrôle. Ce paramètre est facultatif. Lorsqu'il est omis, la valeur TRUE est considérée par défaut. |
KNOWLEDGEBASE dlg_set;
TYPES
FIELDREC IS RECORD
field_entry: STRING;
field_radio: STRING;
field_slide: STRING;
field_list: STRING;
field_button: STRING;
field_check_box: STRING;
field_mle: STRING;
field_combo: STRING;
field_pattern: STRING;
test_list_box: STRING;
test_combo_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
fieldList IS { 'attrib_field_entry',
'attrib_field_radio',
'attrib_field_slide',
'attrib_field_list',
'attrib_field_button',
'attrib_field_check_box',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
}: LIST OF STRING;
textFieldList IS { 'attrib_field_entry',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
}: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
ACTIONS
WHEN $Event IS $MsgSelect THEN
WHEN $FieldName IS 'but_disabled_on' THEN
DlgSetEnabled( $Handle, fieldList, FALSE );
ELSWHEN 'but_disabled_off' THEN
DlgSetEnabled( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_on' THEN
DlgSetHidden( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_off' THEN
DlgSetHidden( $Handle, fieldList, FALSE );
ELSWHEN 'but_mandatory_on' THEN
DlgSetMandatory( $Handle, textFieldList, TRUE );
ELSWHEN 'but_mandatory_off' THEN
DlgSetMandatory( $Handle, textFieldList, FALSE );
ELSWHEN 'but_read_only_on' THEN
DlgSetReadOnly( $Handle, textFieldList, TRUE );
ELSWHEN 'but_read_only_off' THEN
DlgSetReadOnly( $Handle, textFieldList, FALSE );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlg_set',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $mbok +
$MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog box );
END;
------------------------------------------------------------------------
Détermine la valeur d'un contrôle de boîte de dialogue et de toute autre donnée d'instance associée.
FUNCTION DlgSetFieldValue(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newValue: ANY): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
newValue | Le contrôle concerné est défini comme ayant la valeur du paramètre : Lorsque le contrôle est matérialisé par une case à cocher, un bouton d'option ou un curseur de défilement, la nouvelle valeur est convertie en nombre entier et devient égale à la valeur résultante. En cas d'échec de la conversion, le résultat est normalement égal à zéro. Dans le cas des cases à cocher, la valeur zéro ne subit aucune vérification. Toutes les autres valeurs, en revanche, sont vérifiées. Dans le cas des autres types de contrôles, la valeur est convertie sous forme de chaîne. Dans le cas des zones de texte, boîtes de dialogue mixtes, boîtes à liste et des messages, le contrôle est défini sur la base de la nouvelle chaîne indiquée. En ce qui concerne les boîtes à liste, la recherche de la liste consiste à repérer une correspondance avec une chaîne. Lorsque cette correspondance a été trouvée, elle est sélectionnée. Les contrôles SQLManage et de table sont ignorés. Lorsque la mise à jour d'un contrôle aboutit et qu'un champ des données d'instance est relié à un contrôle de boîte de dialogue, une mise à jour a lieu sur les données d'instance. Lorsqu'une valeur est définie, une sélection de message est effectuée pour le champ concerné. |
La définition d'une valeur de contrôle génère une instruction $MsgSelect. Si
la valeur du contrôle est modifiée,
l'instruction générée est $MsgInitialize.
$MsgSelect peut être refusé par le gestionnaire
d'événements de la boîte de dialogue.
Les espaces sont tronqués dans un contrôle de boîte de dialogue
lorsque tous les espaces du contrôle sont vides. Cette situation
peut se produire si
l'utilisateur saisit une chaîne d'espaces vides dans le contrôle, ou
que le fichier de définition de boîte de dialogue contient
une
chaîne vide pour le contrôle. Dans les deux cas, si la valeur du contrôle
vide est appelée, c'est la valeur
$Unknown qui est renvoyée.
KNOWLEDGEBASE DlgSet_f;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PERSONNEL *********)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo $FieldID et $FieldName *)
WHEN $Event IS $MsgCreate THEN
(* Sélectionnez le champ initial pour le curseur *)
DlgSetFieldValue( $Handle, 'messageField',
'Nouveau texte' );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
Détermine si un contrôle se trouve à l'état visible ou caché.
FUNCTION DlgSetHidden(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. L'exécution de la commande a lieu pour chaque contrôle dont le nom figure dans la liste. La valeur correspondant au nombre de contrôles traités est renvoyée. La fin du traitement a lieu lorsqu'une erreur est enregistrée. La variable de système $DlgError est fixée sur le code de l'erreur. Si une erreur survient lors du traitement du premier contrôle, le code correspondant est renvoyé par l'instruction. |
newState | Nouveau statut du contrôle. Ce paramètre est facultatif. Lorsqu'il est omis, la valeur TRUE est considérée par défaut. |
KNOWLEDGEBASE dlg_set;
TYPES
FIELDREC IS RECORD
field_entry: STRING;
field_radio: STRING;
field_slide: STRING;
field_list: STRING;
field_button: STRING;
field_check_box: STRING;
field_mle: STRING;
field_combo: STRING;
field_pattern: STRING;
test_list_box: STRING;
test_combo_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
fieldList IS
{ 'attrib_field_entry',
'attrib_field_radio',
'attrib_field_slide',
'attrib_field_list',
'attrib_field_button',
'attrib_field_check_box',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
}: LIST OF STRING;
textFieldList IS { 'attrib_field_entry',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
}: LIST OF STRING;
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
ACTIONS
WHEN $Event IS $MsgSelect THEN
WHEN $FieldName IS 'but_disabled_on' THEN
DlgSetEnabled( $Handle, fieldList, FALSE );
ELSWHEN 'but_disabled_off' THEN
DlgSetEnabled( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_on' THEN
DlgSetHidden( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_off' THEN
DlgSetHidden( $Handle, fieldList, FALSE );
ELSWHEN 'but_mandatory_on' THEN
DlgSetMandatory( $Handle, textFieldList, TRUE );
ELSWHEN 'but_mandatory_off' THEN
DlgSetMandatory( $Handle, textFieldList, FALSE );
ELSWHEN 'but_read_only_on' THEN
DlgSetReadOnly( $Handle, textFieldList, TRUE );
ELSWHEN 'but_read_only_off' THEN
DlgSetReadOnly( $Handle, textFieldList, FALSE );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlg_set',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Erreur', $mbok + $MBIconError,
'Echec d''ouverture de la boîte de dialogue' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
Sélectionne un ou plusieurs éléments dans une boîte à liste ou dans un contrôle de table, en considérant le ou les indices fournis par ceux-ci.
FUNCTION DlgSetListBoxIndex(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newIndex:INTEGER | INTEGER
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. |
newIndex | Index basé sur 1 du premier caractère à sélectionner. La valeur 0 est renvoyée si l'index n'est pas compris dans la plage de valeurs admise. Tous les éléments de la liste sont sélectionnés lorsqu'une liste de valeurs entières est indiquée, et dans le cas où le contrôle permet les sélections multiples. |
L'attribution d'une nouvelle valeur dans une boîte à liste
déclenche l'émission d'une fonction $MsgSelect (ou $MsgInitialize). L'envoi
du message a lieu même lorsque
la valeur transmise au nouvel index est identique à celle de l'ancien
index.
Remarque : Si la valeur attribuée à l'index est 0, tous les éléments sont dé-sélectionnés dans une liste standard, mais pas dans un contrôle de table.
DlgSetListBoxIndex($Handle,'USER_LIST',5);
------------------------------------------------------------------------
Détermine le caractère obligatoire de l'état d'un contrôle.
FUNCTION DlgSetMandatory(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING,
VAL newState: BOOLEAN): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. L'exécution de la commande a lieu pour chaque contrôle dont le nom figure dans la liste. La valeur correspondant au nombre de contrôles traités est renvoyée. La fin du traitement a lieu lorsqu'une erreur est enregistrée. La variable de système $DlgError est fixée sur le code de l'erreur. Si une erreur survient lors du traitement du premier contrôle, le code correspondant est renvoyé par l'instruction. |
newState | Nouveau statut du contrôle. Ce paramètre est facultatif. Lorsqu'il est omis, la valeur TRUE est considérée par défaut. |
Pour modifier l'état obligatoire d'un contrôle de boîte
de dialogue, vous pouvez faire appel à
la fonction DlgSetMandatory. Si par exemple un
contrôle
n'est pas obligatoire mais est sujet à des circonstances
particulières, vous pouvez utiliser l'instruction DlgSetMandatory
($Handle,'THAT_FIELD',TRUE);
dans le gestionnaire d'événements de la boîte de dialogue. De cette
manière, le contrôle revêt un caractère obligatoire. Le système de
boîtes de dialogue de la boîte à outils du développeur de Tivoli Service Desk
ne permet pas de valider une boîte de dialogue dont les champs
obligatoires ne sont pas renseignés.
Dans de tels cas, un message d'erreur
s'affiche et le curseur est placé sur le premier contrôle obligatoire
non renseigné.
DlgSetMandatory ($Handle,'SOCIAL_SECURITY_NUMBER',TRUE);
------------------------------------------------------------------------
Définit l'état selon lequel un contrôle de boîte de dialogue reste en lecture seule.
FUNCTION DlgSetReadOnly(VAL whdlDialog: WINDOW, VAL
fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. L'exécution de la commande a lieu pour chaque contrôle dont le nom figure dans la liste. La valeur correspondant au nombre de contrôles traités est renvoyée. La fin du traitement a lieu lorsqu'une erreur est enregistrée. La variable de système $DlgError est fixée sur le code de l'erreur. Si une erreur survient lors du traitement du premier contrôle, le code correspondant est renvoyé par l'instruction. |
newState | Nouveau statut du contrôle. Ce paramètre est facultatif. Lorsqu'il est omis, la valeur TRUE est considérée par défaut. |
Pour modifier l'état de mise en lecture seule d'un contrôle de
boîte de dialogue, vous pouvez faire appel à la
fonction DlgSetReadOnly. Vous pouvez par exemple
attribuer à un contrôle l'attribut de lecture seule lorsque
l'utilisateur courant ne possède pas les droits nécessaires pour
modifier la valeur de ce contrôle.
Remarque : Les types de champs pouvant être affectés de l'attribut de lecture seule sont : les boîtes à liste, les zones de texte et les boîtes de dialogue mixtes.
KNOWLEDGEBASE Dlg_But;
TYPES
DlgData IS RECORD
allowEdit: BOOLEAN;
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
IF NOT fields.allowEdit THEN
DlgSetButtonText($Handle,'editButton','Afficher');
(* SAMPLEFIELD doit être du type MLE, champ de saisie ou boîte de dialogue mixte *)
DlgSetReadonly($Handle,'SAMPLEFIELD',TRUE);
END;
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
fields: DlgData;
ACTIONS
fields.allowEdit := FALSE;
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* Exemple de boîte de dialogue *);
------------------------------------------------------------------------
Lance une instruction SQL Select et alimente SQLManage avec la table résultante.
FUNCTION DlgSqlSelect(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL selectString: STRING, VAL
StripHyperlinks: BOOLEAN): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de fenêtre de la boîte de dialogue contenant le contrôle sur lequel est effectuée l'opération. Si la commande est émise par un gestionnaire d'événements qui contient le contrôle, le paramètre pseudo $Handle peut être utilisé. |
fieldName | Nom du contrôle contenu dans la boîte de dialogue dirigée par la commande. Ce nom peut être spécifié dans le concepteur d'interface, ou dans l'instruction DEFINE du fichier de définition de boîte de dialogue. L'indication du nom n'impose pas le respect de la distinction majuscules-minuscules. Le contrôle doit être du type SQLManage. |
selectString | Le paramètre doit correspondre à une instruction SQL Select correctement formatée. L'instruction SQL Select est transmise au gestionnaire de base de données SQL. Si Select aboutit, les données SQLManage sont effacées et tous les enregistrements issus de la sélection sont ensuite insérés dans le champ. |
StringHyperlinks | Réduit une chaîne hypertexte à un simple nom de bouton indiqué entre parenthèses. Tout texte situé avant ou après la chaîne hypertexte demeure inchangé. |
UseHypertextFilter | La documentation relative à DlgSqlSelect fournit des renseignements sur trois variables d'entrée seulement. Toutefois, les différentes utilisations de cette commande dans l'application EA indiquent qu'il existe 4 variables. Cette quatrième variable est de type booléen. Une documentation adéquate devra être rédigée pour préciser la nature et l'utilisation de cette variable. |
En environnement OS/2, SQLManage peut contenir jusqu'à 65 535 enregistrements. Sous Windows, SQLManage contient le nombre d'enregistrements suivant :
* 64 ko de données par ligne
* 256 octets par colonne et par ligne
* 256 colonnes par ligne.
Si l'instruction DlgSQLSelect génère une erreur SQL, cette dernière est renvoyée.
KNOWLEDGEBASE DlgSQL;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PERSONNEL ******** *)
PRIVATE
ROUTINES
(* ******** boîte de dialogue GESTIONNAIRE D'EVENEMENTS ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
selectString: STRING;
ACTIONS
(* Tous les messages de boîtes de dialogue comportent les paramètres pseudo $FieldID et $FieldName *)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyAltS THEN (* Recherchez Alt-S *)
(* Définissez l'invite de saisie du texte par l'utilisateur *)
IF WinEditField( $Desktop, selectString, 0, 0, 30,
'Entrez la nouvelle instruction de sélection SQL',
$WinAutoPos + $WinBorder +
$WinTitle ) > 0
THEN
DlgSQLSelect( $Handle, 'sql_manage_field',
selectString );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{ fields }, fields );
END;
------------------------------------------------------------------------
Modifie l'onglet en vigueur dans un boîte de dialogue à onglets, en lui conférant une nouvelle valeur sélectionnée.
FUNCTION DlgTurnToPage( VAL whdlDialog: WINDOW,
VAL Notebook : STRING,
VAL page: INTEGER ): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
whdlDialog | Descripteur de la fenêtre de la boîte de dialogue contenant le bloc-notes |
notebook | Nom de la boîte de dialogue à onglets dans laquelle l'action est accomplie. Ce nom est défini au moment où le formulaire est créé à l'aide de l'utilitaire Interface Designer (concepteur d'interfaces). |
page | Nombre entier symbolisant le numéro de l'onglet que l'on souhaite atteindre. Le premier onglet porte le numéro 1; le deuxième porte le numéro 2, et ainsi de suite. |
(* Dans cet exemple, une boîte de dialogue à onglets est créée puis, à mesure que la création progresse, l'onglet passe au numéro 2. Cet onglet numéro 2 est le premier que l'utilisateur voit s'afficher. *)
KNOWLEDGEBASE Notebook;
ROUTINES
PROCEDURE MainProgram;
TYPES
record1 is RECORD
MLE1: String;
END;
PRIVATE
ROUTINES
EVENT WinEvent(REF rec: record1) IS
ACTIONS
WHEN $Event IS $MsgAccept THEN
Nothing;
ELSWHEN $MsgCreate THEN
DlgTurnToPage( $Handle, 'MyNotebook', 2);
END;
END;
PROCEDURE MainProgram IS
VARIABLES
rec: record1;
ACTIONS
DlgBox($Desktop, 'notebook[nbForm]',
WinEvent{rec}, rec);
END;
END;
------------------------------------------------------------------------
Crée une fenêtre générique ou une fenêtre défilante à
l'intérieur d'un sous-formulaire existant. Les messages destinés à la
fenêtre sont transmis
au gestionnaire d'événement désigné, et non au gestionnaire
d'événements du dialogue (en effet, le gestionnaire d'événements est
susceptible de filtrer certains messages
clés générés par la routine transmise par le clavier.) Si l'appel de
DlgWinCreate a lieu dans un sous-formulaire
"non vide", le sous-formulaire existant se trouve remplacé.
FUNCTION DlgWinCreate( VAL form : WINDOW,
VAL subform : STRING,
REF win : WINDOW,
VAL eventHandler : EVENT,
VAL style : INTEGER
VAL scrollWindow : BOOLEAN
): INTEGER;
Remarques concernant les arguments | Description du nom de l'argument |
form | Nom du formulaire. |
subform | Identifiant du contrôle de sous-formulaire. |
win | Fenêtre contenue dans le sous-formulaire existant. |
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é $NullHandle peut être utilisé. |
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. |
scrollwindow | Si la valeur de ce paramètre est TRUE, une fenêtre défilante est créée. |
Il n'est pas assuré que toutes les fonctions puissent être
exécutées sur le descripteur renvoyé par cet appel. Les
fonctions non supportées échouent en raison d'une erreur de
gestionnaire
ou suite à une défaillance générale. Les fonctions suivantes ne
fonctionnent pas avec les fenêtres créées par DlgWinCreate:
Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script