IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.

SommaireProgrammation OBasicLes boîtes de dialogue BASICLes zones de texte: TextField (6)
précédent sommaire suivant
 

Code vb : Sélectionner tout
1
2
3
4
5
'Insère la date du jour dans la zone de texte. 
odialog1.getControl("TextField1").Text = Date 
  
'Lit le contenu de la zone de texte 
MsgBox oDialog1.getControl("TextField1").getText

Mis à jour le 2 août 2013 SilkyRoad

Cet exemple modifie la couleur du texte et la couleur de fond.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
  Dim Obj As Object 
  'Définit la zone de texte 
  Obj = oDialog1.GetControl("TextField1")  
  'Modifie la couleur du texte (Blanc) 
  Obj.Model.TextColor = RGB(255 , 255, 255) 
  'Modifie la couleur de fond (Noir) 
  Obj.Model.BackgroundColor = RGB(0, 0, 0)

Mis à jour le 2 août 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  Dim oSelection As New com.sun.star.awt.Selection  
  
  'Remplit la zone de texte pour le test 
  oDialog1.getControl("TextField2").Text = "Ma chaîne" 
  
  'Définit le début de la sélection 
  oSelection.Min = 0  
  'Définit la fin de la sélection (L'exemple prend en compte tous les caractères 
  'de la zone de texte). 
  oSelection.Max = Len(oDialog1.getControl("TextField2").Text) 
  
  'Applique le focus sur la zone de texte.  
  oDialog1.getControl("TextField2").setFocus 
  'Sélectionne la zone définie  
  oDialog1.getControl("TextField2").Selection = oSelection

Mis à jour le 2 août 2013 somla

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub RemplacementSelection 
  Dim Avant As String , Apres As String 
  Dim Cible As String, LaChaine As String 
  Dim NouvelleChaine As String 
  
  'Indique la chaîne qui va remplacer la sélection   
  NouvelleChaine = "La description" 
  
  'Vérifie si la zone de texte est vide. 
  If odialog1.getControl("TextField1").Text = "" Then Exit Sub 
  'Vérifier s'il y a une sélection dans la zone de texte 
  If odialog1.getControl("TextField1").SelectedText = "" Then Exit Sub 
  
  'Récupère la chaine sélectionnée dans la zone de texte 
  Cible = odialog1.getControl("TextField1").SelectedText  
  'Récupère le contenu complet de la zone de texte 
  laChaine = odialog1.getControl("TextField1").Text  
  'Récupère la position de la donnée à remplacer dans la zone de texte 
  Position = Instr ( laChaine , Cible )  
  
  If laChaine = Cible Then 
    odialog1.getControl("TextField1").Text = NouvelleChaine 
    Exit Sub 
  End If  
  
  'Récupère la position de la chaine avant la sélection 
  Avant = Left ( laChaine , Position - 1 ) 
  'Récupère la position de la chaine après la sélection 
  Apres = Right ( laChaine , Len ( laChaine) -Len( Cible) - Position + 1 ) 
  
  'Modifie la zone de texte 
  odialog1.getControl("TextField1").Text = Avant & NouvelleChaine & Apres   
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Ajoutez la procédure ci-dessous dans un module du fichier Open Office.
Créez une zone de texte nommée TextField1 dans la boîte de dialogue.
Clic droit sur l'objet
Propriétés
Onglet Evènements

Pour attribuer la macro « UtilisationClavier » à l'évènement « Touche "enfoncée »:
Cliquez sur le bouton « Assigner » dans la fenêtre « Assignation de macro ».
Recherchez le module contenant la macro dans l'arborescence de gauche (liste des bibliothèques, et les modules des fichiers OOo ouverts.)
Ensuite, sélectionnez la macro « UtilisationClavier » dans la liste de droite.
Cliquez sur OK pour valider.
Cliquez sur OK dans la fenêtre « Assignation de macro ».
Fermez la fenêtre « Propriétés TextField ».

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'Source adaptée: Basic Programmer's Guide Dialogs 
Sub UtilisationClavier(Event As Object) 
  Dim Cible As String 
  Dim Msg As String 
  Dim oSelection As New com.sun.star.awt.Selection  
  
  Select Case Event.KeyCode 
    Case com.sun.star.awt.Key.RETURN 
      Msg = "Touche Entrée" 
  
    Case com.sun.star.awt.Key.TAB 
      Msg = "Touche tabultation" 
  
    Case com.sun.star.awt.Key.DELETE 
      Msg = "Touche suppression" 
  
    Case com.sun.star.awt.Key.ESCAPE 
      Msg = "Touche Echap" 
  
    Case com.sun.star.awt.Key.DOWN 
     Msg = "Touche Flèche bas" 
  
    Case com.sun.star.awt.Key.UP 
      Msg = "Touche Flèche haut" 
  
    Case com.sun.star.awt.Key.LEFT 
      Msg = "Touche Flèche gauche" 
  
    Case com.sun.star.awt.Key.RIGHT 
      Msg = "Touche Flèche droite" 
  
    Case Else 
      Select Case Event.KeyChar   
        'Si les touches ne correspondent pas au clavier numérique:  
        Case Is < 48, Is > 57 
          Msg = "Vous devez saisir uniquement des valeurs numériques." 
  
          '--- Supprime le contenu le caractère erroné  
          Cible = odialog1.getControl("TextField1").getText 
          odialog1.getControl("TextField1").Text = Left( Cible , Len(Cible) - 1 ) 
  
          '--- Repositionne le curseur en fin de zone 
          oSelection.Min = Len(odialog1.getControl("TextField1").Text)  
          oSelection.Max = Len(oDialog1.getControl("TextField1").Text) 
          oDialog1.getControl("TextField1").Selection = oSelection 
    End Select 
End Select 
  
If Msg <> "" Then MsgBox Msg       
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Vous pouvez utiliser le Listener (gestionnaire d'évènement) XFocusListener pour identifier la prise ou la perte de focus sur un contrôle.
L'exemple ci-dessous applique le gestionnaire d'évènement sur les zones de texte contenues dans la boîte de dialogue Dialog1. Chaque objet type "TextField" (UnoEditControl) change ensuite de couleur lorsqu'il prend le focus.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Global oDialog1 As Object 
Private oFocusListener As Object 
  
Sub AfficherBoiteDialogue 
  Dim Tableau() 
  Dim i As Integer 
  
  DialogLibraries.LoadLibrary( "Standard" ) 
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 ) 
  
  'Définit le Listener (gestionnaire d'évènements) 
  oFocusListener = createUnoListener("TextBox_", "com.sun.star.awt.XFocusListener") 
  
  Tableau = oDialog1.Controls 
  
  'Boucle sur les contrôles de la boîte de dialogue BASIC.   
  For i = 0 To UBound(Tableau) 
    'Identie les TextBox et associe le Listener 
    If Tableau(i).ImplementationName = "stardiv.Toolkit.UnoEditControl" Then _ 
      Tableau(i).addFocusListener( oFocusListener )  
  Next i 
  
  'Affiche la boîte de dialogue BASIC. 
  oDialog1.Execute() 
  
End Sub 
  
  
'Evènement perte du focus 
Sub TextBox_focusLost( oEvent As Object ) 
  Dim Cible As Object 
  
  'Identifie le contrôle 
  Cible = oEvent.Source.Model 
  'Modifie la couleur de fond du contrôle 
  Cible.Backgroundcolor = RGB(255, 255, 255) 
End Sub 
  
  
'Evènement prise du focus 
Sub TextBox_focusGained( oEvent As Object) 
  Dim Cible As Object 
  
  'Identifie le contrôle 
  Cible = oEvent.Source.Model 
  'Modifie la couleur de fond du contrôle 
  Cible.Backgroundcolor = RGB(150, 150, 200) 
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.