FENETRES ET MENUS

113 downloads 134 Views 161KB Size Report
Pascal Buguet. Imprimé le 19 août 2004. Page 2. 1.1 LES FENETRES. C'est le type d'application (d'interface) qui va déterminer le type des fenêtres à utiliser.
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