Accueil Fonctions Calc Menu Basic EDI OOo 1.x EDI OOo 2.x EDI LibO - OOo 3.x Affectation touche Affectation icône Etape par étape Macro débutant Fonctions Basic Dialogues OOo1-2 Dialogues LibO-OOo3 Quelques exemples Exemples dialogue Fonctions perso Définitions Recherche sur site


Boîtes de dialogues. Petit test 1/2

 




Accès direct pages : Petit test 1/2, Petit test 2/2, Nuancier, Carte club 1/3, Carte club 2/3, Carte club 3/3,


 

 

 

Vrai débutant(e) ? Un conseil, commencez par la macro Loto.

 

Au fil de ces quelques pages, une initiation à la manipulation des boîtes de dialogue. Pas toujours simple, mais à travers quelques exemples simples, vous devriez progresser, facilement j'espère. Les exercices présentés ici sont réalisés avec OOo 2.x, mais possibles avec OOo 1.1.5

Vous avez sans doute déjà vu ce petit test qui consiste à poser une question et répondre par oui ou non. A la réponse qui normalement vous intéresse, il est impossible de cliquer puisque le bouton se dérobe quand vous approchez le curseur de la souris. Nous allons essayer de faire la même chose.

Ouvrons un nouveau classeur, puis via Outils, Macro, Gérer les macros, OpenOffice.org Basic, ouvrez un nouveau module, nommé Module1 par défaut puis OK

 

Pour insérer un nouvelle boite de dialogue, le plus simple est de faire un clic gauche dans l'onglet Module1, dans le menu flottant, il suffit de faire Insérer, Boîte de dialogue BASIC

 

Vous obtiendrez un résultat semblable à celui ci-contre. A gauche, la boîte à outils, déplaçable, modifiable, ancrable... et à sa droite, la boite de dialogue élémentaire. Bien que ne possédant aucun élément, on peut déjà faire un test, via l'icône Mode Test activé / désactivé.

Il sera possible de fermer cette boîte primitive, via l'icône de fermeture, en haut et à droite de la boîte.

Pour sélectionner la boîte, amenez le curseur de la souris près d'un des bords, cliquez à gauche. La boite est maintenant sélectionnée. De minuscules carrés verts sont placés dans les angles et au milieu des bords. Cliquez à droite. Dans le menu flottant, sélectionnez Propriétés

Autre possibilité : utilisez l'icône Sélection et encadrez entièrement la boîte. Pour la suite, même méthode que précédement. Cette méthode est très utile pour sélectionner un ou plusieurs composants dans une boîte de dialogue.

 

 

 

 

Commençons par créer un boîte de dialogue qui va ressembler à celle ci-contre. Pas de tailles précises.

Label1 est créé avec l'icône champ d'étiquette, utile pour afficher des textes.

CommandButton1 et CommandButton2 sont créés avec l'icône bouton.

Astuce Il est possible de ne créer que le premier bouton, puis par un copier / coller, créer le second. Avantage, les élements (dont la taille) sont identiques.

Dans les 2 cas, les noms des objets (Label1, CommandButton1, CommandButton2) sont générés automatiquement. Il est possible de les modifier.

Il faut ensuite, dans les propriétés de CommandButton1, choisir OK comme Type de bouton (onglet Général ) et choisir Annuler pour CommandButton2.

 

Une fois cette première approche vue, nous allons créer une macro simple. On pose une question: "voulez-vous être augmenté ?", avec oui ou non comme réponse. En faisant évoluer la macro, on avance vers le gag. Vous êtes prêt ? Allons-y !

 

 

Il est possible de modifier directement les titres, les tailles, des boutons et Label dans les propriétés respectives. Nous allons le faire par le programme.

Remarques:
Non indispensable, mais utile, Option Explicit vous évitera des ennuis
Par défaut, une nouvelle feuille commence par Sub Main et finit par End Sub. Vous pouvez les supprimer, sinon, il faudra insérer la macro à appeler après Sub Main

 

Dialog001

  1. Sub QuestionAugmentation
  2.   Dim oDialog As Object, oPDialog As Object
  3.   Dim oRetourOui As Object, oRetourNon As Object
  4.   Dim oTxt As Object
  5.  
  6.   DialogLibraries.LoadLibrary("Standard")
  7.   oDialog = DialogLibraries.Standard.Dialog1
  8.   oPDialog = CreateUnoDialog(oDialog)
  9.   '
  10.   oTxt = oPDialog.getControl("Label1")
  11.   oTxt.Text = "Voulez-vous être augmenté ?"
  12.   oRetourOui = oPDialog.getControl("CommandButton1")
  13.   oRetourOui.Label = "OUI"
  14.   '
  15.   oRetourNon = oPDialog.getControl("CommandButton2")
  16.   oRetourNon.Label = "NON"
  17.   '
  18.   oPDialog.setTitle("Petit test")
  19.   '
  20.   oPDialog.Execute()
  21. End Sub

 

Les premières lignes ne sont pas les plus simples, mais indispensables pour la suite. D'abord on charge la librairie Standard, c'est la librairie par défaut. Ensuite on déclare un objet oDialog qui représente la boîte de dialogue. Notez bien DialogLibraries.Standard.Dialog1 qui reprend les noms Standard et Dialog1, le nom par défaut de la boite de dialogue. Si vous modifiez le nom de l'onglet, comme par exemple MonDialogue, l'appelation deviendra DialogLibraries.Standard. MonDialogue

La variable oTxt (ligne 10) est crée pour simplifier la gestion future. Pour écrire le texte de Label1, il suffit d'écrire oTxt.Text suivi du texte à écrire. Nous aurions pu nous en passer avec une écriture moins évidente comme suit :

oPDialog.Model.Label1.Label = "Voulez-vous être augmenté ?"

Cette instruction (ligne 10) est le reflet de la modification manuelle des propriétés de champ d'étiquette, onglet Général, Titre

oPDialog.setTitle (ligne 18) affiche un nom en haut de la boîte de dialogue. Cette instruction correspond à la modification manuelle des propriétés de boite de dialogue, onglet Général, Titre

Cette macro telle quelle s'exécute normalement, mais il ne se passe rien. Normal, puisque la dernière ligne affiche la boîte de dialogue et ne fait rien d'autre. Nous allons donc ajouter quelques lignes, mais surtout apporter des précisions indispensables des boutons OUI et NON.

Pour le bouton CommandButton1, celui qui va correspondre à OUI, il faut le déclarer comme un bouton Ok, dans les propriétés du bouton, option Type de bouton et pour bouton CommandButton2, celui qui va correspondre à NON, il faut le déclarer comme un bouton Annuler.

 

Dialog002

  1. Sub QuestionAugmentation
  2.   Dim oDialog As Object, oPDialog As Object
  3.   Dim oRetourOui As Object, oRetourNon As Object
  4.   Dim oTxt As Object
  5.  
  6.   DialogLibraries.LoadLibrary("Standard")
  7.   oDialog = DialogLibraries.Standard.Dialog1
  8.   oPDialog = CreateUnoDialog(oDialog)
  9.   '
  10.   oTxt = oPDialog.getControl("Label1")
  11.   oTxt.Text = "Voulez-vous être augmenté ?"
  12.   oRetourOui = oPDialog.getControl("CommandButton1")
  13.   oRetourOui.Label = "OUI"
  14.   '
  15.   oRetourNon = oPDialog.getControl("CommandButton2")
  16.   oRetourNon.Label = "NON"
  17.   '
  18.   oPDialog.setTitle("Petit test")
  19.   '
  20.   iDialogResult = oPDialog.Execute()
  21.   '
  22.   If iDialogResult = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
  23.     MsgBox("Va donc bosser !")
  24.   Else
  25.     MsgBox("Félicitations")
  26.   Endif
  27. End Sub

En ligne 22, nous faisons appel à une des API et nous testons si la valeur de retour du bouton cliqué correspond à OK. Vous pouvez faire un test avec les propriétés Type de bouton, sélectionnée à Standard pour les 2 boutons. Avec cette méthode, on peut toujours faire fonctionner la macro, mais il faudra passer par des sous-programmes (évenements) déclenchés au clic sur le bouton. La méthode sera donc plus lourde.

La suite est à la page suivante.

 

 


 


 

Ce site n'est plus mis à jour. Merci aux nombreux visiteurs depuis 2003. Consultez le Wiki LibreOffice.
   

Le tableur Calc par l'exemple : christianwtd@free.fr
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France License.

  .

Site optimisé pour Firefox

Dernière modification : 13/09/2010 à 15h35


Déjà plusieurs visites sur ce site depuis quelque temps (au moins vous et moi)

Compteur non certifié