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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Utilisation des Types et des Collections


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Profil pro
    Bricoleur
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bricoleur

    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 61
    Points
    61
    Par défaut Utilisation des Types et des Collections
    Bonjour à vous et merci par avance,
    Je suis à la recherche d'un lien qui m'expliquerait l'utilisation avancée des Types Utilisateurs en OOoBasic. J'ai déjà lu le chapitre que Bernard Marcelly y consacre dans son livre.
    Ce que je cherche précisément, c'est comment (si c'est possible, je demande peut-être la lune) on peut lire ou écrire les valeurs des "propriétés" du type sans connaître leur nom. Un petit exemple sera peut être plus clair.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Type champ
      NbFormat as Long
      NomInt as String
      Valeur as Variant
    End Type
     
    Type Entite
      Nom as champ
      Adresse as champ
      Compte as champ
      ...
    End Type
    J'aimerai faire une boucle (ou autre) qui m'évite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub CeQueJeVeuxEviter
      Entite.Nom.Valeur="Ma maison"
      Entite.Adresse.Valeur="Chez moi"
      Entite.Compte.Valeur=12
      ...
    end Sub
    Ubuntu 14.04 LTS
    LibreOffice 4.4

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Bonjour,

    Je ne comprends pas l'intérêt d'utiliser des types, car le but d'utiliser des types et de pouvoir enregistrer des valeurs sans tenir compte d'un enchainement des données.

    Exemple de ce que je veux dire avec le Type champ :

    Cas 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Entite.NbFormat.Valeur= 15
    Entite.NomInt.Valeur= "A"
    Entite.Valeur.Valeur= 1.2 'd'ailleurs éviter de mettre des identifiants qui sont aussi des mots clés
    Cas 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Entite.NomInt.Valeur= "A"
    Entite.Valeur.Valeur= 1.2
    Entite.NbFormat.Valeur= 15
    Sinon peut-être que tout simplement la fonction array() suffirait.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre du Club
    Profil pro
    Bricoleur
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bricoleur

    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 61
    Points
    61
    Par défaut
    Je peux effectivement me planter sur mes choix de conception. Je suis un bricoleur.
    J'essaie de créer une application de compta sur calc.
    J'ai plusieurs boites de dialogue pour interagir avec l'utilisateur.
    Je récupère les données via une Collection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    51
     
    Function litDlg(Dlg as object)
     
    	Dim Controles() 
    	Dim i As Integer 
    	Dim Collec as new Collection, valeur as variant
    	dim c as object, nom as variant
     
    	Controles = Dlg.Controls
    	For i = 0 To UBound(Controles)
    	c=Controles(i)
    	nom = c.Model.Name
    	if c.Model.Tag="rec" then 'Pour limiter les contrôles que je veux enregistrer
    		select case c.ImplementationName
    			case "stardiv.Toolkit.UnoCheckBoxControl"
    				valeur=c.state
    			case "stardiv.Toolkit.UnoRadioButtonControl"
    				valeur=c.state
    			case "stardiv.Toolkit.UnoFixedTextControl"
    				if isNumeric(c.text) then 
    					valeur=Cdbl(c.text)
    				else
    					valeur=c.text
    				end if				
    			case "stardiv.Toolkit.UnoEditControl"
    				if isNumeric(c.text) then 
    					valeur=Cdbl(c.text)
    				else
    					valeur=c.text
    				end if
    			case "stardiv.Toolkit.UnoListBoxControl"
    				valeur=c.text
    			case "stardiv.Toolkit.UnoComboBoxControl"
    				valeur=c.text
    			case "stardiv.Toolkit.UnoDateFieldControl"
    				valeur=CDateFromUnoDate(c.date)
    			case "stardiv.Toolkit.UnoTimeFieldControl"
    				valeur=CDateFromUnoTime(c.time)
    			case "stardiv.Toolkit.UnoNumericFieldControl"
    				valeur=Cdbl(c.Value)
    			case "stardiv.Toolkit.UnoCurrencyFieldControl"
    				valeur=Cdbl(c.Value)
    			case "stardiv.Toolkit.UnoFormattedFieldControl"
    			case "stardiv.Toolkit.UnoGroupBoxControl"
    			case "stardiv.Toolkit.UnoImageControlControl"	
    		end select
    		Collec.add(valeur,nom)
    	end if	
    	Next i	
    	litDlg = Collec
    end Function
    Maintenant que j'ai cette collection, j'aimerai renseigner le type correspondant sans avoir à écrire à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Entite.Nom.Valeur=Collec(Entite.Nom.NomIplementation)
    Entite.Adresse.Valeur=Collec(Entite.Adresse.NomIplementation)
    ....
    et ce pour chaque boite de dialogue
    C'est peut-être un peu de fainéantise
    Ubuntu 14.04 LTS
    LibreOffice 4.4

Discussions similaires

  1. Utilisation du type dynamique des objets
    Par rocklass dans le forum Général Java
    Réponses: 2
    Dernier message: 23/02/2012, 14h34
  2. création des types et des tables en sql3
    Par asma07 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/01/2011, 20h42
  3. Utiliser JOGL + shader pour des effets sur des images 2D.
    Par nouknouk dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 19/12/2007, 10h46
  4. Utilisation du Enable avec des combobox ou des listbox
    Par legos dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 19/09/2006, 22h35
  5. Réponses: 2
    Dernier message: 27/04/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo