FENETRES ET MENUS

Transcription

FENETRES ET MENUS
1 FENETRES ET MENUS
1
FENETRES ET MENUS _______________________________________________________________ 1
1.1
Les Fenêtres _____________________________________________________________________ 2
1.1.1
Création _____________________________________________________________________ 2
1.1.2
Les types de fenêtres ___________________________________________________________ 2
1.1.3
Les propriétés des fenêtres ______________________________________________________ 4
1.1.4
Les instructions d'ouverture de fenêtre _____________________________________________ 6
1.1.5
Fermeture des fenêtres _________________________________________________________ 8
1.1.6
Arrangement des fenêtres ______________________________________________________ 10
1.2
Les Menus ______________________________________________________________________ 11
1.2.1
Création du menu ____________________________________________________________ 11
1.2.2
Ecran de conception d'un menu__________________________________________________ 12
1.2.3
Propriétés des menus__________________________________________________________ 13
1.2.4
Les menus flottants ___________________________________________________________ 14
1.3
Créer et utiliser un menu générique pour les MDI _______________________________________ 15
PowerBuilder – Les fenêtres et les menus
1.1 LES FENETRES
C'est le type d'application (d'interface) qui va déterminer le type des fenêtres à
utiliser.
Il existe deux grand types d'application : les SDI (Single Document Interface) et
les MDI (Multiple Document Interface) .
Word, PowerBuilder sont de type MDI.
Calc, Notepad sont des SDI.
1.1.1 Création
Nous avons déjà vu que l'on crée une fenêtre en cliquant sur le bouton New, en
sélectionnant PB Object et en double-cliquant sur Window.
1.1.2 Les types de fenêtres
Type
Main
Mdi
MdiHelp
Child
Popup
Response
Définition
Fenêtre Principale
Cadre MDI
Cadre Mdi avec barre d'état
Fenêtre enfant (d'une MDI)
Fenêtre volante
Fenêtre modale
Les fenêtres Main sont à la base des applications SDI.
Les MDI et MDIHelp sont à la base des applications MDI.
Les fenêtres CHILD sont les fenêtres ouvertes dans les cadres MDI.
© Pascal Buguet
Imprimé le 19 août 2004
Page 2
PowerBuilder – Les fenêtres et les menus
Les POPUP et les RESPONSE sont utilisées dans les deux types d'application.
Les Popup pour des fenêtres d'informations ou de détails.
Les Response pour des fenêtres d'alerte ou de saisies obligatoires. Elles sont
modales.
© Pascal Buguet
Imprimé le 19 août 2004
Page 3
PowerBuilder – Les fenêtres et les menus
1.1.3 Les propriétés des fenêtres
Général
1.1.3.1
Scroll
Toolbar
Other
Général
Propriétés qui déterminent l'aspect général.
Ces propriétés sont actives ou inactives à la conception selon le type de fenêtre
choisi. Il s'agit surtout de la barre de titre, des boutons ControlMenu, MinBox,
MaxBox et de la propriété Resizable.
ClientEdge ajoute un bord à la fenêtre.
1.1.3.2
Scroll
Les cases à cocher permettent de déterminer la présence ou l'absence de barres
de défilement.
Les valeurs ( pour les Units) spécifie le nombre d'unités PowerBuilder de
déplacement lorsque l'utilisateur clique sur les boutons de défilement.
Les valeurs ( Pour les PerPage ) spécifie le nombre d'unités PowerBuilder ( x
100) de déplacement lorsque l'utilisateur clique dans les barres de défilement.
© Pascal Buguet
Imprimé le 19 août 2004
Page 4
PowerBuilder – Les fenêtres et les menus
1.1.3.3
Toolbar
Position de la barre d'outils (En haut, en bas,…, Flottante)
Si la barre d'outils est flottante vous pouvez la positionner et la dimensionner
avec les propriétés ToolBarX, ToolBarY, …..
1.1.3.4
Other
Position, largeur, hauteur de la fenêtre et forme du pointeur.
© Pascal Buguet
Imprimé le 19 août 2004
Page 5
PowerBuilder – Les fenêtres et les menus
1.1.4 Les instructions d'ouverture de fenêtre
•
Ouverture d'une Main ou d'une MDI
•
Syntaxe
Open(nom_de_fenêtre [, parent])
Parent pour une Popup
•
Exemple
Open(W_mdi)
Open(W_sle_proprietes)
•
Ouverture d'une fenêtre Child
•
Syntaxe
OpenSheet ( Nom_de_la_fenêtre , Nom_de_la_fenêtre_parent )
•
Exemple
OpenSheet ( w_sle_proprietes , parentwindow )
•
Ouverture d'une fenêtre Child en passant un paramètre
•
Syntaxe
OpenSheetWithParm ( Nom_de_la_fenêtre , paramètre ,
Nom_de_la_fenêtre_parent )
•
Exemple
© Pascal Buguet
Imprimé le 19 août 2004
Page 6
PowerBuilder – Les fenêtres et les menus
OpenSheetWithParm ( w_villes , sle_cp.text , parentwindow )
•
Syntaxes complètes
OpenSheet (Variable_fenêtre [, Type_fenêtre ], Mdi [, position
[,Arrangement] ] )
OpenSheetWithParm ( Variable_fenêtre, paramètre
[,Type_fenêtre], Mdi[, position [, Arrangement ] ] )
Où
Variable_fenêtre est soit un nom de fenêtre de la bibliothèque soit une variable
du type d'une fenêtre.
Paramètre est un paramètre (Variable, propriété, constante)
Type fenêtre est un type de fenêtre (String)
Mdi est un cadre MDI
Position est la position du menu dans la barre de menus où sera référencée la
fenêtre.
Arrangement est un enumerated (Enuméré) : Cascaded!, Layered!, Original!
•
Exemples
opensheet(w_sle_proprietes,parentwindow,1,Layered!)
ouvre une fenêtre, le parent est le parent du menu dans lequel se trouve cet
instruction, la référence vers la fenêtre se trouvera à la fin du premier menu et
cette fenêtre est ouverte en plein écran.
W_sle_proprietes Lw_sle
Opensheet(lw_sle,"w_sle_proprietes",w_mdi,1,Original!)
Cette syntaxe permet d'ouvrir plusieurs instances de la même fenêtre.
© Pascal Buguet
Imprimé le 19 août 2004
Page 7
PowerBuilder – Les fenêtres et les menus
1.1.5 Fermeture des fenêtres
1.1.5.1
•
Fermeture d'une fenêtre
Syntaxe
Close ( Nom_de_la_fenêtre )
•
Exemple
Close(w_sle)
1.1.5.2
Fermeture de la fenêtre active
Nous utilisons la méthode GetActiveSheet() applicable à une Mdi pour
récupérer la fenêtre active et la fermer.
•
Syntaxe
mdi.GetActiveSheet()
•
Exemple
window lw_active
lw_active = w_mdi.GetActiveSheet()
Close(lw_active)
1.1.5.3
Fermeture de toutes les fenêtres enfant
Nous utilisons le même principe mais dans une boucle.
© Pascal Buguet
Imprimé le 19 août 2004
Page 8
PowerBuilder – Les fenêtres et les menus
La fonction IsValid renvoie vrai si la variable pointe sur un objet valide, une
instance correcte d'objet.
window lw_active
lw_active = w_mdi.Getactivesheet()
do while isvalid(lw_active)
close(lw_active)
lw_active = w_mdi.Getactivesheet()
loop
© Pascal Buguet
Imprimé le 19 août 2004
Page 9
PowerBuilder – Les fenêtres et les menus
1.1.6 Arrangement des fenêtres
Les fenêtres peuvent être présentées en cascade, en mosaïque,….
Elles doivent être de type Child, ouvertes avec un OpenSheet et RESIZABLE.
C'est la méthode ArrangeSheets appliquée à un objet MDI qui permet cet
arrangement.
•
Syntaxe
Cadre_MDI.ArrangeSheets ( Mode )
Où Mode prend les valeurs suivantes (Enumerated!) : TileHorizontal! , Tile! ,
Cascade! , Layer! , Icons! Pour Mosaïque Horizontale, Mosaïque Verticale,
Cascade, Plein Ecran, Réorganiser les icônes.
•
Exemples
w_mdi.arrangesheets(TileHorizontal!)
w_mdi.arrangesheets(Tile!)
w_mdi.arrangesheets(Cascade!)
© Pascal Buguet
Imprimé le 19 août 2004
Page 10
PowerBuilder – Les fenêtres et les menus
1.2 LES MENUS
Ce que l'on voit apparaître en premier c'est la Barre de menus.
Une barre de menus est composée de Menus
Un menu est composé d'options de menu ou Items de menus
Une option de menu peut être un menu en cascade.
Ce sont les options de menus qui sont codés.
Les actions sont exécutés lorsque l'utilisateur clique sur l'item ou l'atteint via un
raccourci directe (du type Ctrl/S) ou une fois le menu ouvert (Lettre) – le menu
ayant été ouvert éventuellement via un raccourci du type ALT / N) ou bien
encore grâce à un bouton dans une barre de boutons.
1.2.1 Création du menu
Pour créer un menu : File / New / Pb Object / Menu
© Pascal Buguet
Imprimé le 19 août 2004
Page 11
PowerBuilder – Les fenêtres et les menus
1.2.2 Ecran de conception d'un menu
•
Première étape : Création du premier menu de la barre
Vous cliquez droit sur le seul nœud puis vous cliquez Insert Submenu Item
Vous saisissez le texte du menu : Les &Contrôles ; le nom du menu est
automatiquement généré : m_les_controles.
•
Deuxième étape : Création des items de menu
Pour créer des Items vous cliquez droit sur le menu puis sur Insert
SubMenuItem
© Pascal Buguet
Imprimé le 19 août 2004
Page 12
PowerBuilder – Les fenêtres et les menus
Ensuite – selon que vous soyez sur un menu ou un item vous cliquez sur l'option
adéquate pour créer un nouvel item de menu.
1.2.3 Propriétés des menus
Propriétés des menus
Général
ToolBar
Dans les propriétés la première page d'onglet ( General ) règle un certain nombre
de propriétés (Nom, Texte, Aide de la barre d'état, accessibilité, raccourcis,…
La deuxième page d'onglet ( ToolBar ) règle surtout la barre d'outils : infobulle,
icône, …
© Pascal Buguet
Imprimé le 19 août 2004
Page 13
PowerBuilder – Les fenêtres et les menus
1.2.4 Les menus flottants
1.2.4.1 Les menus flottants existant dans la barre de menus
présente à l'écran
•
Syntaxe
Barre_de_menu.Nom_menu.PopMenu ( PositionX , PositionY )
•
Exemple
Soit un menu m_edit dans le barre de menus m_mdi
m_mdi.m_edit.popmenu(this.pointerX(),this.pointerY())
1.2.4.2 Les menus flottants d'une barre de menus non
présente à l'écran
•
Principe
Puisque la barre de menus n'est pas présente à l'écran il faut l'instancier avant de
l'afficher. Une fois instanciée on affiche le menu avec la méthode PopMenu
comme précédemment en précisant le nom du menu.
On instancie un objet avec l'instruction Create et on libère la mémoire avec
l'instruction Destroy.
•
Exemple
// Déclaration d'une variable menu du type du menu à afficher
m_flottant lm_flottant
lm_flottant = create m_flottant
lm_flottant.m_edit.popmenu(this.pointerX(),this.pointerY())
if isvalid(lm_flottant) then destroy lm_flottant
© Pascal Buguet
Imprimé le 19 août 2004
Page 14
PowerBuilder – Les fenêtres et les menus
1.3 CREER ET UTILISER UN MENU GENERIQUE POUR LES MDI
1.3.1 Objectif
Créer un menu qui soit réutilisable.
Parce que toutes les barres de menus des applications MDI possède les menus
Fichier (avec les items Imprimer, Fermer, Fermer tout, Quitter,…), Edit (avec
Couper, Copier,…), Fenêtres (avec les items Mosaïque, Cascade,…) et Aide.
1.3.2 Démarche
•
Création du WorkSpace générique
Vous créez, si ne la possédez pas encore, une application "générique" dans un
nouveau workspace (ws_generique par exemple).
•
Création de la barre de menus
Vous créez un nouvel objet Menu (donc une barre de menus) dans Menu Painter
avec tous les menus et tous les items standards.
Pour tous les menus qui doivent être dans tous les cas à droite dans la barre de
menus vous cochez la case à cocher Shift To Right dans la fenêtre des propriétés
du menu en question.
Menus
© Pascal Buguet
Propriétés
Imprimé le 19 août 2004
Page 15
PowerBuilder – Les fenêtres et les menus
•
Création de menu héritant
Vous vous placez dans votre workspace applicatif.
Vous allez sur les propriétés de la cible (Target) en cliquant droit sur l'objet
target.
Vous sélectionnez l'onglet Library List puis après avoir cliqué sur le bouton
Browse vous sélectionnez et validez sur la bibliothèque (Library) générique
Avant
Pendant
Après
© Pascal Buguet
Imprimé le 19 août 2004
Page 16
PowerBuilder – Les fenêtres et les menus
Votre deuxième bibliothèque apparaît dans l'arborescence de votre workspace.
Vous sélectionnez l'objet Menu (m_mdi_generique), vous cliquez droit et vous
cliquez sur l'option Inherit.
Vous pourrez ainsi modifier la nouvelle barre de menus en insérant un ou
plusieurs menus.
Vérifiez la propriété Shift to Right de chaque nouveau menu.
Si le nouveau menu doit se trouver au centre cette propriété doit être décochée.
Si le nouveau menu doit se trouver à la droite de tous les menus cette propriété
doit être cochée.
Avant (Générique)
© Pascal Buguet
Imprimé le 19 août 2004
Après (Spécifique)
Page 17