Nouveautés DDS Graphiques V3R10 ............................................................................ : RPG -- ** Interrogation par code ** le: xx/yy/zz : : : : : : : : CLE DESIGNATION TYPE QUANTITE : : K1 Article un 1 15,00 |A| : : K2 Article deux 7 27,50 |:| : : K4 Article quatre 2 4,56 |:| : : K7 article sept 2 745,45 /--> |:| : : K8 article huit 1 1000,00 / |V| : : / : : Ascenseurs / : : : : : : : : | Entrée | | Défil Av | | Défil Ar | <----- Boutons : :..........................................................................: |
Barres de défilement (ascenseurs) avec le mot-clé SFLEND(*SCRBAR) associé aux sous-fichiers. Dans ce contexte SFLSIZ(&taille), permet de renseigner la taille réelle du sous-fichier de manière dynamique [taille est une variable 5,0 S]. Cela permet de rendre la position du pointeur de l'ascenseur significative lors d'un chargement page à page. SFLSCROLL mot-clé associé à une variable 5,0 H permet de retrouver le n° de rang de l'enregistrement à afficher. Si Entrée est utilisée, SFLSCROLL renvoie le N° de rang de la première ligne actuelle Si ROLLUP est utilisée, SFLSCROLL renvoie le N° de rang de la première ligne de la page suivante. Si ROLLDOWN est utilisée et renvoyée au pgm, SFLSCROLL renvoie 1. Quand l'ascenseur est utilisé à l'aide la souris, SFLSCROLL renvoie le N° de rang de la ligne à afficher en tête de page. |
SFLRCDNBR possède une nouvelle option : SFLRCDNBR(*TOP) (compatible avec *CURSOR), qui demande à ce que l'enregistrement dont le rang est contenu dans la variable associée, soit le premier affiché Il suffit de placer la variable reçue de SFLSCROLL dans la variable associée à SFLRCDNBR(*TOP) pour que l'affichage corresponde TOUJOURS à la réalité, (même après une manipulation de l'ascenseur). soit: SFLPAG(15) A LIGNE 5S 0H SFLRCDNBR(*TOP) A DEMANDE 5S 0H SFLSCROLL pgm : chgt d'une page, dernier = rang (du dernier écrit) ligne = 1 tant que pas F12 affichage si (demande + 14) > dernier chgt d'une page(15) fin si ligne = demande fin tant que. |
Boutons avec les mots-clés PSHBTNFLD et PSHBTNCHC A CHOIX 2Y 0B 23 2PSHBTNFLD A PSHBTNCHC(1 'Entrée') A PSHBTNCHC(2 'Défil Av' ROLLUP) A PSHBTNCHC(3 'Défil Ar' ROLLDOWN) Syntaxe de PSHBTNCHC (x texte fonction) texte peut être une constante ou une variable du format (&texte) si texte contient >, le caractère suivant est souligné (raccourci clavier) Il est possible d'associer les touches de fonctions: CA01-24 / CF01-24 ROLLUP, ROLLDOWN, ENTER, PRINT, CLEAR, HELP, HOME (ENTER par dft) Vous pouvez aussi tester la variable associée. (ici choix, contenant une valeur entre 1 et 3) |
Syntaxe de PSHBTNFLD: PSHBTNFLD(option1 option2 ...) *NORSTCSR/*RSTCSR : restreindre (ou non) le déplacement du curseur à l'intérieur du groupe de boutons. (*NUMCOL x) : précise sur combiens de colonnes doivent s'afficher les boutons avec (*NUMCOL 3) l'affichage est : <bouton1> <bouton2> <bouton3> <bouton4> <bouton5> <bouton6> (*NUMROW x) : précise sur combiens de lignes doivent s'afficher les boutons avec (*NUMROW 2) l'affichage est : <bouton1> <bouton3> <bouton5> <bouton2> <bouton4> <bouton6> (*GUTTER x) : nombre d'espaces entre deux boutons le défaut est 3 espaces, nombre de colonnes = nombre de boutons entiers tenant sur une ligne. la largeur d'un bouton est fonction du texte à afficher. |
Reconnaissance de la souris avec MOUBTN (*xyz fonction *QUEUE/*NOQUEUE) : événement simple (1 action) ou MOUBTN (*xyz *xyz fonction *QUEUE/*NOQUEUE) : événement double (2 actions souris) x = U (Unshift) / S (Shift) y = L (Left) / R (right) / M (middle) z = P (pressed) / R (released) / D (double click) les fonctions sont les mêmes que PSHBTNCHC (CAxx/CFxx ROLLUP ...) ou un EVENT-ID E00 à E15, récupérable dans l'INFDS. les contrôles sur les zones d'entrée (COMP, VALUES ...) sont effectués Chaque action souris doit être unique. Un événement double ne peut pas avoir comme première action souris l'action associée à un autre événement simple. *QUEUE/*NOQUEUE précise si le système doit bufferiser les actions souris. A R FMT CA03(03) A (click bouton gauche = F3) MOUBTN(*ULP CA03) |
Pour utiliser cette nouvelle fonction, RTNCRSLOC a été modifié : RTNCSRLOC(*RECNAME &fmt &zone &pos), retrouve comme en V2R30 les noms de format et de zone correspondant à la position curseur. RTNCSRLOC(*MOUSE &l1 &c1 &l2 &c2), retrouve (&l1 &c1) la position actuelle du curseur, et dans &l1 &c1 la position du curseur lors de la première action souris pour un événement double. (0 dans &l2 &c2, s'il s'agit d'un événement simple) et enfin RTNCSRLOC(*WINDOWS &l1 &c1 &l2 &c2), retrouve la position absolue du curseur dans &l1 &c1, et la position (&l2 &c2) relative à la première position utilisable de la fenêtre (ligne1/colonne1). Donc &l2 &c2 peuvent avoir des valeurs négatives. Cela permet aussi de calculer la position de la fenêtre. Utilisable même avec un format classique (sans WINDOW), &l2 &c2 prennent alors les valeurs de &l1 &c1. &l1 &c1 &l2 &c2, sont des variables du format 3S 0 Hidden. |
Titres possibles avec les fenêtres : *CENTER *TOP WDWTITLE( (*TEXT 'titre') (*COLOR XXX) (*DSPATR xx) *LEFT *BOTTOM ) *RIGHT Divers: Césure automatique sur une variable multilignes (usage I ou B) WRDWRAP la césure est réalisée sur un espace. (idem BLKFOLD/PRTF) VALNUM empêche la saisie de ' ', '+', '-' pour une variable numérique CSRINPONLY limite le déplacement du curseur aux zones d'entrée. (attention si vous avez des aides associées à des constantes) HELPSHELF associe une étagère INFOSEEKER à un panneau d'aide (F11) il faut au moins un HLPPNLGRP invalide avec HLPSCHIDX |
Boutons radio et Cases à cocher : > valides avec un sous-fichier SFLCHCCTL défini dans le format d'enregistrement, (doit être la première variable de l'enregistrement) contient 0 = disponible 1 = choisi ou coché ................ 2 = non disponible : 2,3 et 4 : on ne peut pas positionner le curseur, sauf s'il : ne peuvent : y a une aide associée. : être que : 3 = non disponible : fournies : on peut toujours positionner le curseur : par le pgm. : 4 = non disponible :..............: on ne peut jamais positionner le curseur SFLSNGCHC défini dans le format de contrôle, précise qu'il s'agit d'une liste avec boutons radio SFLMLTCHC défini dans le format de contrôle, précise qu'il s'agit d'une liste avec cases à cocher |
paramètres pour SFLSNGCHC *RSTCSR/*NORSTCSR : resteindre le déplacement du curseur au sous-fichier *SLTIND : chaque enregistrement est précédé d'un bouton radio *NOSLTIND (dft) : chaque enregistrement est affiché tel que, la validation se fait par la touche espace. (la ligne passe en inversion d'image) *AUTOSLT : La touche entrée valide automatiquement la ligne où se trouve le curseur *NOAUTOSLT : Touche espace imposée pour valider. *AUTOSLTEHN : idem *AUTOSLT derrière un ctl graphique. |
paramètres pour SFLMLTCHC(&variable *option) &variable : variable du format (4Y 0 H) qui contiendra le nombre d'enregistrements choisis *RSTCSR/*NORSTCSR : voir SFLSNGCHC *SLTIND/*NOSLTIND : -- idem -- mais avec cases à cocher. La doc ne le précise pas, mais les tests tendent à prouver que le système n'accepte qu'UNE variable dans le format d'enregistrement, en plus de celle associée au mot-clé SFLCHCCTL (erreur à la compil). il faudrait alors définir une Data-structure dans le pgm. et enfin le mot-clé SFLRTNSEL indique que lors de la lecture des enregistrements modifiés (READC ou READ SUBFILE NEXT MODIFIED) les enregistrements pré-sélectés par programme, (variable associée au mot-clé SFLCHCCTL contenant 1), seront lus. Sans ce mot-clé, seuls les enregistrement modifiés par l'utilisateur (à l'aide du clavier), seront lus. |
petit exemple récapitulatif A A R SFLRCD SFL A ZONCTL 1Y 0H SFLCHCCTL A CLE 10A O 6 10 A R SFLCTLRCD SFLCTL(SFLRCD) A SFLMLTCHC(&NBSEL *SLTIND) A SFLPAG(5) SFLSIZ(&TAILLE) A 30 SFLDSP A 31 SFLDSPCTL A N31 SFLCLR A 32 SFLEND(*SCRBAR) A N32 ROLLUP(60) A DEMANDE 5S 0H SFLSCROLL A LIGNE 4S 0H SFLRCDNBR(*TOP) A TAILLE 5S 0P A NBSEL 4Y 0H A 1 30' -- Titre --' A 4 5'Liste à sélections multiples' |
DIVERS Mots-clés existants, modifiés: PULLDOWN -> *RSTCSR/*NORSTCSR déplacements curseur limités au menu. WINDOW -> *RSTCSR/*NORSTCSR déplacements curseur limités à la fenêtre. CHCCTL -> mêmes valeurs (0 à 4), que SFLCHCCTL MNUBAR -> *SEPARATOR/*NOSEPARATOR avec ou sans ligne de séparation MNUBARSEP invalide avec MNUBAR(*NOSEPARATOR) Pour tout ce qui est DDS Graphique, n'oubliez pas que le résultat sera : + sensiblement indentique sur un écran semi-graphique et un micro en émulation PC5250 (nouvel émulateur CA pour WINDOWS) + mais assez différent avec une émulation RUMBA (les ascenseurs sont sur fond vert par exemple) |