Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Documents pareils
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Optimisation de 4D Server et 4D Web Server. Résumé. 4D Notes techniques

Google Drive, le cloud de Google

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Utilisation de l ordinateur portable Bluetooth avec le hub Logitech sans fil

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Guide d installation

1 è r e étape : créer sa base de d o n n é e s

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

GESTION DE L'ORDINATEUR

Fonctions pour la France

Réalisez votre propre carte de vœux Éléctronique

4e Dimension Clés XML Backup. Windows /Mac OS 4e Dimension D SA. Tous droits réservés.

Asset Management Software Client Module. Manuel d utilisation

GUIDE DE DEMARRAGE V1.02

Formation. Module WEB 4.1. Support de cours

Manuel Utilisateur Version 1.6 Décembre 2001

Single User. Guide d Installation

Guide de prise en main Symantec Protection Center 2.1

Manuel d'utilisation de Mémo vocal

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

But du papier : Paramétrer WSUS pour récupérer les mises à jour et administrer le serveur WSUS

Le publipostage avec Open Office

Antidote et vos logiciels

Comment utiliser FileMaker Pro avec Microsoft Office

Antidote et vos logiciels

Service d information pour remise de paiement de factures Scotia

Mise à jour Version de réseau centrale

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Services bancaires par Internet aux entreprises. Guide pratique pour : Transfert de fichiers Version

TeamViewer 9 Manuel Management Console

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

POUR MAC Guide de démarrage rapide. Cliquez ici pour télécharger la version la plus récente de ce document

Auguria_PCM Product & Combination Manager

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

La messagerie électronique

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

Documentation module hosting

Fonctions pour la Suisse

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

Guide d installation CLX.PayMaker Office (3PC)

ecafé TM CENTER

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

Manuel utilisateur Centre de Messagerie

CATALOGUE FORMATIONS

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.3

Access 2007 FF Access FR FR Base

Manuel d utilisation NETexcom

Antidote et vos logiciels

Symantec Enterprise Vault

Publication Assistée par Ordinateur

Publipostage avec Calc

L'assistance à distance

Débuter avec OOo Base

L ORDINATEUR FACILE D ACCÈS!

MODE OPERATOIRE OPENOFFICE BASE

Manuel d utilisation. Logiciel (Device Monitor) Pour les systèmes d imagerie numérique. Configuration requise Description générale

NAS 206 Utiliser le NAS avec Windows Active Directory

Laplink PCmover Express La façon la plus facile de transférer vers un nouveau PC Windows

MEGA ITSM Accelerator. Guide de Démarrage

DirXML License Auditing Tool version Guide de l'utilisateur

Archi Office, le logiciel de gestion des documents administratif de l'architecte

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

Créer un fichier PDF/A DÉPÔT ÉLECTRONIQUE

Logiciel (Système d impression directe)

PROCEDURE D INSTALLATION DES LOGICIELS EBP EN ENVIRONNEMENT ESU4

Mise à jour de la base de données des marques nationales du tourisme

Samsung Auto Backup Guide de démarrage rapide

Manuel de l utilisateur. Soft-phone - Client VoIP 3CX Version 6.0

Copyright Arsys Internet E.U.R.L. Arsys Backup Online. Guide de l utilisateur

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Utilisation du client de messagerie Thunderbird

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

MANUEL ACHAT à DISTANCE

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

Activités professionnelle N 2

VRM Monitor. Aide en ligne

Guide d'utilisation du Serveur USB

MO-Call pour les Ordinateurs. Guide de l utilisateur

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Manuel d utilisation du logiciel Signexpert Paraph

Qu'est ce que le Cloud?

Virtualisation de Windows dans Ubuntu Linux

GUIDE D'INSTALLATION DU LOGICIEL

Manuel de I utilisateur. PrintShop Mail Version Logiciel de publipostage professionnel pour Apple Macintosh

l'ordinateur les bases

F O R M A T I O N S LOTUS NOTES. 8.5 Utilisateurs rue de la Bôle. E U R L. a u c a p i t a l d e

FAQ Trouvez des solutions aux problématiques techniques.

Points forts : Amélioration de la génération et de la qualification des listes de clients potentiels

Les Utilisateurs dans SharePoint

Transcription:

Des palettes d'outils modulaires et détachables Par Jim DORRANCE Note technique 4D-200404-10-FR Version 1 Date 1 Avril 2004 Résumé Les commandes LIRE RECT OBJET, DEPLACER OBJET, et CHOIX VISIBLE permettent au developpeur de repenser sa manière de mettre en application des interfaces. Il est possible de grouper des objets et de traiter le groupe lui-même comme élément d'interface. 4D Notes techniques Copyright 1985-2004 4D SA - Tous droits réservés Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible. Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers. Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture dulogiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence. Aucune partie de ce document ne peut être reproduite ourecopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage outout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA. 4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA. Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation. Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright 1990-2002 est un produit de Altura Software,Inc. 4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,trumbull,ct,usa. XTND Copyright 1992-2002 4D SA. Tous droits réservés. XTND Technology Copyright 1989-2002 Claris Corporation.. Tous droits réservés ACROBAT Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'adobe Systems Inc. Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. 1 / 14

Des palettes d'outils modulaires et détachables Introduction Les palettes d'outils sont un standard dans beaucoup d'applications. Des palettes sont associées à une "fenêtre contenante", c'est-à-dire une fenêtre contenant l'information éditable. La palette aide l'utilisateur à éditer ou en formater le contenu. Des palettesd'outil sont souvent mises dans une fenêtre à gauche d'une "fenêtre contenante" ou au-dessus de la "fenêtre contenante", sous la barre de titre. Ces positions évitent les conflits avec des commandes standards de fenêtre. Si la palette appartient à la "fenêtre contenante", l'utilisateur a moins de place pour le contenu, particulièrement sur un petit écran. En outre des options de la palette peuvent être cachées si l'utilisateur rend la fenêtre plus petite. L'utilisation des boutons de triangle de déploiement avec une palette dans sa propre fenêtre est une solution pour contrôler efficacement l'espace de bureau. Il vous permet également de présenter les choix les plus fréquents de l'utilisateur tout en cachant des choix plus complexes ou l'information additionnelle. Cette note technique décrira comment créer les palettes modernes. Fonctionnalités Nous voudrions associer une palette de formatage à une "fenêtre contenante". Quand la "fenêtre contenante" est au premier plan, la palette devrait être visible. Quand la "fenêtre contenante" n'est pas au premier plan, la palette devrait disparaître. La première fois que la palette s'ouvre, seules les options de police devraient être déployées. 2 / 14

L'utilisateur devrait pouvoir glisser et déposer les zones dans la palette à sa convenance. Ici l'énumération d'expressions a été déplacée en haut de la palette: L'utilisateur devrait pouvoir individuellement cacher / déployer chaque zone : 3 / 14

Quand une zone est contractée, l'utilisateur doit avoir accès aux fonctionnalités de la zone par un Popup: Et il serait intéressant de pouvoir "détacher" les zones et les montrer dans leur propre fenêtre. 4 / 14

La Base Demo: Constantes Dans une Note Technique précédente, nous avons montré comment créer des constantes prédéfinies par programmation. La base Demo utilise des constantes créées par la méthode projet Ks_. Ces constantes sont: TYPES DES PROCESS: SÉLECTEURS POUR DES MÉTHODES FORMULAIRE ET DES MÉTHODES OBJET kproctype_splashscreen kproctype_demo kproctype_palette kproctype_picker kproctype_popuppicker PALETTES: LES DIFFÉRENTES PALETTES EMPLOYÉES PAR LA BASE DE DONNÉES kpalette_nopalette kpalette_demopalette TYPES DES PICKERS: LES DIFFÉRENTES ZONES DE LA PALETTE kpickertype_phrases kpickertype_fonts kpickertype_rgb NOMS DES PICKER: LE PRÉFIXE ALPHA POUR DES OBJETS DANS LA PALETTE kpickerlabel_phrases kpickerlabel_fonts kpickerlabel_rgb AUTRES Ks: LA HAUTEUR DE LA BARRE DE TITRE kpalette_headerheight SELECTEURS POUR Alert_ kalert_badparamcount La Base Demo: Sur Ouverture 5 / 14

La base Demo initialise des variables interprocess et crée 3 process au démarrage. Compiler_InterProcess Process_SplashScreen := Nouveau process( "SplashScreen_";32*1024;"$SplashScreen") Process_Palette:=Nouveau process("palettes_";32*1024;"$palette") Process_Demo:=Nouveau process("demo_";32*1024;"$demo") Le Process SplashScreen Le process SplashScreen récupère son ID et l'affecte à la variable interprocess Process_SplashScreen. Le process SplashScreen initialise alors des variables process et affecte 2 variables, theprocesstype et thepalette avec des constantes prédéfinies. TheProcessType sera employé comme sélecteur dans des méthodes formulaire et des méthodes objet. ThePalette contient la palette à associer à ce process. Dans cette base exemple, il y a 2 constantes prédéfinies: kpalette NoPalette et kpalette DemoPalette. L'affectation de kpalette_nopalette à la variable process ThePalette indique qu'aucune palette ne doit être montrée quand le process de SplashScreen est au premier plan. Un dialogue de bienvenue simple est alors affiché : Process_SplashScreen:=Numero du process courant Compiler_Process theprocesstype:=kproctype_splashscreen thepalette:=kpalette_nopalette C_ENTIER LONG($W;$H) LIRE PROPRIETES FORMULAIRE([Table 1];"SplashScreen";$W;$H) C_ENTIER LONG($L;$T;$R;$B) $L:=((Largeur ecran-$w)/2) $T:=((Hauteur ecran-$h)/3) $R:=$L+$W $B:=$T+$H Creer fenetre($l;$t;$r;$b;3) DIALOGUE([Table 1];"SplashScreen") FERMER FENETRE Le Process Palette Le process Palette récupère son ID et l'affecte à la variable interprocess Process_ Palette. Le process Palette initialise alors des variables process et affecte 2 variables, theprocesstype et thepalette avec des constantes prédéfinies. TheProcessType sera employé comme sélecteur dans des méthodes formulaire et des méthodes objet. 6 / 14

La constante prédéfinie kpalette_nopalette est affecté à la variable process ThePalette. Le process de palette n'a pas d'autre palette associée à sa fenêtre. La variable interprocess ThePalette est affectée avec la valeur contenue dans la variable process ThePalette. Le process Palette fait maintenant une boucle jusqu'à ce que l'on quitte 4D. S'il y a une palette à montrer, les données nécessaires pour la palettesont initialisées, une fenêtre est ouverte et la palette montrée., aucun dialogue n'est montré et le processus est suspendu. Process_Palette:=Numero du process courant Compiler_Process theprocesstype:=kproctype_palette thepalette:=kpalette_nopalette thepalette:=thepalette theend:=faux Repeter thepalette:= thepalette Si ( thepalette=kpalette_nopalette ) SUSPENDRE PROCESS( Process_Palette) Palettes_Init_ (kpickertype_fonts ;kpickertype_phrases ;kpickertype_rgb ) Repeter Si (Chercher dans tableau( arpicker_isthere;vrai)>0) Palettes_Window DIALOGUE([Table 1];"Palette") FERMER FENETRE thepalette:=kpalette_nopalette Jusque (thepalette# thepalette) (theend) ( theend) Jusque (theend) ( theend) La Méthode projet Palettes_Init La méthode Palette_Init reçoit comme paramètres des constantes prédéfinies des zones qui doivent être incluses dans la palette et leur ordre d'inclusion. La base demo a 3 "Pickers", un "Picker" de couleur de RVB (kpickertype_phrases), un "Picker" de police (kpickertype_fonts), et un "Picker" d'expressions (kpickertype_phrases). Des tableaux interprocess contiennent l'information nécessaire permettant à chaque "Picker" de fonctionner : Le type du "Picker" : arpicker_type{theelement}. Si le "Picker" est dans la palette : arpicker_isthere{theelement}. Si le carreau du "Picker" est caché/montré : arpicker_isopen{theelement}. Le préfixe alpha des objets appartenant au "Picker" : arpicker_prefix{theelement}. La hauteur de la zone du "Picker" : arpicker_height{theelement}. 7 / 14

Si le "Picker" est dans sa propre fenêtre: arpicker_process{theelement}. Un pointeur sur le bouton du caché/montré : arpicker_bhideshow{theelement}. Un pointeur sur le bouton de Glisser/Déposer: arpicker_bdrag{theelement}. Un pointeur sur le bouton de Popup: arpicker_bpopup{theelement}. Les données pour le "Picker" sont initialisées par la méthode projet Picker_Init. Le Process Demo TheProcessType sera employé comme sélecteur dans des méthodes formulaire et des méthodes objet. Cette fois ThePalette contient le kpalette_demopalette, la palette à associer à ce process. Un DIALOGUE est alors dessiné, quoique caché. Process_Demo:=Numero du process courant CACHER PROCESS ( Process_Demo) Compiler_Process theprocesstype:=kproctype_demo thepalette:=kpalette_demopalette C_ENTIER LONG($W;$H) LIRE PROPRIETES FORMULAIRE([Table 1];"Demo";$W;$H) C_ENTIER LONG($L;$T;$R;$B) $L:=((Largeur ecran-$w)/2) $T:=((Hauteur ecran-$h)/3) $R:=$L+$W $B:=$T+$H Window_Demo:=Creer fenetre($l;$t;$r;$b;regular window ;"Demo") DIALOGUE([Table 1];"Demo") FERMER FENETRE Le Process Picker Un process "Picker" est créé pour chaque occurrence d'un "détaché" d'une zone de la palette. Le process reçoit 3 paramètres: le "Picker" à montrer, et les coordonnées de la fenêtre à montrer. Les 2 drapeaux, theprocesstype et thepalette sont affectés. Le "Picker" est initialisé, et montré dans un dialogue. C_ENTIER LONG($1) LE FORMULAIRE C_ENTIER LONG($2) MOUSEV C_ENTIER LONG($3) MOUSEH Si (Nombre de parametres=3) Compiler_Process C_ENTIER LONG(thePicker;$MouseH;$MouseV) thepicker:=$1 8 / 14

$MouseH:=$2 $MouseV:=$3 theprocesstype:= kproctype_picker thepalette:= kpalette_nopalette Picker_Init (thepicker) Picker_Window (thepicker;$mouseh;$mousev) DIALOGUE([Table 1];"Palette") FERMER FENETRE Alert_ (Nom methode courante;kalert_badparamcount ) La Méthode Projet PopUpPicker La méthode projet PopUpPicker est appelée quand le bouton de PopUpPicker est cliqué dans la palette. La méthode projet PopUpPicker installe la routine APPELER SUR EVENEMENT et ouvre une fenêtre pour montrer le "Picker" désiré. C_ENTIER LONG($1) LE TYPE DE PICKER C_ENTIER LONG($2) MOUSEV C_ENTIER LONG($3) MOUSEH Si (Nombre de parametres=3) C_ENTIER LONG(thePicker;$MouseH;$MouseV;$theProcessType) thepicker:=$1 $MouseH:=$2 $MouseV:=$3 $theprocesstype:=theprocesstype theprocesstype:=kproctype_popuppicker Process_EventProcess:=Numero du process courant PopUpPicker_Window (thepicker;$mouseh;$mousev) APPELER SUR EVENEMENT ("PopUpPicker_OnEventCall") DIALOGUE([Table 1];"Palette") APPELER SUR EVENEMENT ("") FERMER FENETRE theprocesstype:=$theprocesstype Process_EventProcess:=0 Alert_ (Nom methode courante;kalert_badparamcount ) Le PopUpPicker_OnEventCall vérifie tous les clics de souris, et si un clic se produit en dehors de la fenêtre de PopUpPicker, l'événement est enlevé de la queue des événements, le process de PopUpPicker est appelé, et la fenêtre est fermée. 9 / 14

Si (MouseDown=1) C_ENTIER LONG($h;$v;$State) POSITION SOURIS ($h;$v;$state;*) C_ENTIER LONG($Window) $Window:= Chercher fenetre ($h;$v) Si ($Window# thewindow) FILTRER EVENEMENT APPELER PROCESS ( Process_EventProcess) Cacher / Montrer la Palette. Quand la fenêtre du process Demo est amenée au premier plan, l événement formulaire Sur activation est reçu. La méthode projet Palettes_Set est appelée avec la variable process thepalette comme paramètre. Cette methode vérifie si la palette montrée est différente de la palette demandée, et si oui, le process Palette est appelé avec la variable interprocess thepalette mise à jour. C_ENTIER LONG($1) PALETTE DEMANDEE Si (Nombre de parametres=1) Si ( Process_Palette>0) VERIFIE L'INTEGRITE DE LA REQUETE C_ENTIER LONG($TheRequestedPalette) $TheRequestedPalette:=$1 Si ($TheRequestedPalette<kPalette_NoPalette ) $TheRequestedPalette:=kPalette_NoPalette Si ($TheRequestedPalette>kPalette_theCount ) $TheRequestedPalette:=kPalette_NoPalette CHANGE LA PALETTE SEULEMENT SI NECESSAIRE Au cas ou : ($TheRequestedPalette=kPalette_NoPalette ) & ( thepalette=kpalette_nopalette ) : ($TheRequestedPalette=kPalette_NoPalette ) & ( thepalette>kpalette_nopalette ) thepalette:=$therequestedpalette REACTIVER PROCESS ( Process_Palette) APPELER PROCESS ( Process_Palette) : ($TheRequestedPalette= thepalette) MONTRER PROCESS ( Process_Palette) : ( thepalette=kpalette_nopalette ) & ($TheRequestedPalette>kPalette_NoPalette ) thepalette:=$therequestedpalette MONTRER PROCESS ( Process_Palette) REACTIVER PROCESS ( Process_Palette) : ($TheRequestedPalette# thepalette) thepalette:=$therequestedpalette APPELER PROCESS ( Process_Palette) Fin de cas 10 / 14

Alert_ (Nom methode courante; kalert_badparamcount ) Dessin des "Pickers" dans la palette Le formulaire "Palette" contient tous les objets nécessaires pour dessiner les "Pickers". La page 0 contient les objets d'interface et une simple variable pour gérer le Glissé /Déposé. Dans une base de données complexe, il serait intéressant d'avoir plusieurs formulaires, avec pour chacun les objets nécessaires pour un type spécifique de palette. La page 1 contient les objets actifs nécessaires pour faire fonctionner la palette. 11 / 14

Quand la palette est dessinée, pour chaque "Picker" montré dans la palette, les objets des "Pickers" sont déplacés à leur emplacement correct. Quelques éléments sont cachés ou montrés, cela dépend de l'état du sémaphore Hide/Show du "Picker". Quand un "Picker" est dessiné dans sa propre fenêtre, comme dans un PopUpPicker, seulement les objets pour ce "Picker" sont déplacés. Tous les autres objets sont cachés avec la commande CHOIX VISIBLE. C_ENTIER LONG($i;$thePicker;$thePickerCount;$theTop;$L;$T;$R;$B;$MoveH;$MoveV) $thepickercount:=taille tableau( arpicker_type) C_BOOLEEN($Open) $Open:=Faux C_ALPHA(55;$PreFix) OBTENEZ TOUS LES PICKERS UTILISÉS EN PLACE, OUVERTS, EN COMMENÇANT AU DESSUS $thetop:=0 Boucle ($thepicker;1;$thepickercount) $PreFix:= arpicker_prefix{$thepicker} Si ( arpicker_isthere{$thepicker}) CHOIX VISIBLE(*;$PreFix+"@";Vrai) LIRE RECT OBJET(*;$PreFix+"Rect";$L;$T;$R;$B) DEPLACER OBJET(*;$PreFix+"Drag";$L+2;$T+2;$R-2;$B-2;*) CHOIX VISIBLE(*;$PreFix+"Rect";Faux) $MoveH:=0-$L 12 / 14

$MoveV:=0-($T-$theTop) DEPLACER OBJET(*; arpicker_prefix{$thepicker}+"@";$moveh;$movev) $thetop:=$thetop+($b-$t)-1 $Open:= arpicker_isopen{$thepicker} CHOIX VISIBLE(*;$PreFix+"OpenPict";$Open) CHOIX VISIBLE(*;$PreFix+"ClosedPict";Non($Open)) CHOIX VISIBLE(*;$PreFix+"PopUp";Non($Open)) CHOIX VISIBLE(*;$PreFix+"PopUpPict";Non($Open)) DEPLACER OBJET(*; arpicker_prefix{$thepicker}+"@";maxent ;MAXENT ) CHOIX VISIBLE(*;$PreFix+"@";Faux) Fin de boucle POUR CHAQUE "PICKER", SI PICKER NON OUVERT, ON CACHE LA ZONE DE CONTENU ET DEPLACE LES PICKERS DU DESSOUS Boucle ($thepicker;1;$thepickercount) Si ( arpicker_isthere{$thepicker}) Si (Non( arpicker_isopen{$thepicker})) $PreFix:= arpicker_prefix{$thepicker} $MoveV:=0- arpicker_height{$thepicker} ON VERIFIE LA TAILLE DE LA VARIABLE DRAG ET ON LA DEPLACE (en fonction du statut du "PICKER", ouvert ou fermé) LIRE RECT OBJET(*;$PreFix+"Drag";$L;$T;$R;$B) DEPLACER OBJET(*;$PreFix+"Drag";$L;$T;$R;$B+$MoveV;*) CHOIX VISIBLE(*;$PreFix+"_@";Faux) Boucle ($i;$thepicker+1;$thepickercount) DEPLACER OBJET(*; arpicker_prefix{$i}+"@";0;$movev) Fin de boucle Fin de boucle La Méthode Projet FM_ La méthode projet FM _ est appelée à partir de tous les formulaires. Puis FM _ appelle la méthode projet appropriée suivant le type du process. L événement Sur chargement est celui où les objets de "Picker" sont mis en place. C_ENTIER LONG($1) EVENEMENT FORMULAIRE Au cas ou : (theprocesstype=kproctype_palette ) Palettes_FM ($1) : (theprocesstype=kproctype_demo ) Demo_FM ($1) : (theprocesstype=kproctype_picker ) Picker_FM ($1) : (theprocesstype=kproctype_popuppicker ) PopUpPicker_FM ($1) : (theprocesstype=kproctype_splashscreen ) 13 / 14

Fin de cas La Méthode Projet OM_ La méthode projet OM_ est appelée à partir de tous les objets actifs des formulaires. Puis OM _ appelle la méthode projet appropriée suivant le type du process et objet appelés. La méthode projet Picker_OM gère toutes les fonctionnalités des différents "Pickers" de la Palette. Elle est également présente là où le bouton de Hide/Show (caché/montré), le bouton de PopUpPicker, et les routines de Glisser /Déposer sont gérés. C_ENTIER LONG($1) EVENEMENT FORMULAIRE C_POINTEUR($2) SELF Si (Nombre de parametres=2) C_ENTIER LONG($Event) C_POINTEUR($Self) $Event:=$1 $Self:=$2 Au cas ou : (theprocesstype=kproctype_splashscreen ) : (theprocesstype=kproctype_palette ) Picker_OM ($Event;$Self) : (theprocesstype=kproctype_demo ) Demo_OM ($Event;$Self) : (theprocesstype=kproctype_picker ) Picker_OM ($Event;$Self) : (theprocesstype=kproctype_popuppicker ) PopUpPicker_OM ($Event;$Self) Fin de cas Alert_ (Nom methode courante;kalert_badparamcount ) Conclusion : Les commandes LIRE RECT OBJET, DEPLACER OBJET, et CHOIX VISIBLE permettent au developpeur de repenser sa manière de mettre en application des interfaces. Il est possible de grouper des objets et de traiter le groupe lui-même comme comme élément d'interface. Des éléments d'interface peuvent être organisés par des thèmes, avec les éléments de chaque thème sur un formulaire. Pendant que les applications se développent en taille et complexité, une telle approche permet au developpeur de créer les solutions modulaires aux problématiques qui se répètent. Dans la base Demo, la palette est montrée quand une fenêtre contenante est affichée. Elle pourrait également être appelée quand le curseur écrit entre dans un zone de texte, ou comme une zone popup associée à un bouton ; ou comme popup contextuel associé à un process d'appeler SUR EVENEMENT. 14 / 14