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

Delphi Discussion :

Nom d'objet avec variable, possible?


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Par défaut Nom d'objet avec variable, possible?
    Bonjour à tous, suite à ma demande pour la création de documents Words (et surtout suite à ma visite sur les différents tutoriels très bien faits), je reviens à la charge. :p

    Mon document word est donc créer (là tout marche c'est niquel) mais le problème c'est que j'ai moultes ComboBox (12 exactement) et au lieu de préciser à chaque fois quel signet doit prendre les données de quelle ComboBox, j'ai préféré faire une boucle "for". Ce qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        for i := 3 to iCount do begin
        vBookMark := vBookMarks.Item('signet'+inttostr(i));
        vBookMark.Select;
        vContent := vBookMark.Range;
        vContent.InsertAfter(ComboBox[i-2].text);
        end;
    Là, Delphi ne digère pas le "ComboBox[i-2].text" (i est bien déclaré en tant qu'integer). Si je me souviens bien, en pascal c'est possible, mais est-ce possible d'appeler des objets à l'aide de cette méthode? Où en existe-t'il une autre qui m'éviterait de taper une centaine de lignes de code répétitives?

    Merci d'avance,

    Cleem@isatioN!

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    essaye

    Ensuite, tout dépend ce que tu veux faire ! je doute que c'est la solution ...

    sinon tu veux peut-être faire un tableau Array[0..11] of TComboBox ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Par défaut
    J'y ai pensé, mais dans ce cas là, sa va me prendre plusieurs items de la même ComboBox non?

    Dans mon cas, c'est différentes ComboBox que je veux appeler.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    Donc tu dois faire un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox:Array[0..11] of TComboBox;
    Ensuite si tu as une form, tu peux voir FindComponent et nommer tes composants ... et tu fais un tableau de constante qui contient les noms de composant associé à un 'signet'
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Par défaut
    Arf bon j'ai créer mon tableau de TComboBox, et ensuite j'apelle les combobox comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vContent.InsertAfter(ComboBox[i-3].text);
    Mais quand je lance la création du document Word, il me dit :

    "First chance exception at $7C812A5B. Exception class EAccessViolation with message 'Access violation at address 0045199D in module 'Project_Patrimoine.exe'. Read of address 78AB1932'. Process Project_Patrimoine.exe (1140)"

    Aie Aie Aie Caremba!

  6. #6
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Citation Envoyé par CleeM
    Arf bon j'ai créer mon tableau de TComboBox, et ensuite j'apelle les combobox comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vContent.InsertAfter(ComboBox[i-3].text);
    Mais quand je lance la création du document Word, il me dit :

    "First chance exception at $7C812A5B. Exception class EAccessViolation with message 'Access violation at address 0045199D in module 'Project_Patrimoine.exe'. Read of address 78AB1932'. Process Project_Patrimoine.exe (1140)"

    Aie Aie Aie Caremba!
    Il ne faudrait peut-être pas oublier d'initialiser ton tabeau avec les références des combobox (un peu de reflexion n'a jamais tué personne).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ComboBox[0] := Combobox1;
    ComboBox[1] := Combobox2;
    // etc
    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Par défaut
    Quelle bleuzaille je fait! =/

    Merci beaucoup Eric et le gentil troll.

    J'en profite pour poser une deuxième question (fiou j'enchaine aujourd'hui :p), histoire de ne pas trop poster sur le forum, j'ai un peu honte de mes questions des fois. :p

    J'ai créé un DBGrid avec plusieures collones (Référence, Désignation, etc...) j'ai mis toutes les colonnes en ReadOnly=FALSE, la DBGrid idem... Mais lorsque je lance le programme je n'arrive pas à rentrer de données dans les cases...

    Comment faire? Ou peut-être devrais-je utiliser autre chose qu'une DBGrid (sachant qu'elle n'est pas liée à une BDD, il faut juste entrer quelques données afin de les faires ressortir sur Word, elles aussi).

  8. #8
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Plusieurs solutions possibles, j'en donne une.
    A partir de la source de données (composant TDatasource), tu affectes la propriété AutoEdit à True.
    Tu peux aussi à l'aide d'un bouton passer en mode Edition avec Datasource1.DataSet.Edit.

    Explores un peu l'aide en ligne de Delphi et les tutoriels de ce site, et mieux encore les documentations standards (elles sont livrées en pdf dans certaines versions de Delphi). Tu devrais trouver ton bonheur et cela te permettra d'approfondir tes connaissances.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  9. #9
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Citation Envoyé par CleeM
    Comment faire? Ou peut-être devrais-je utiliser autre chose qu'une DBGrid (sachant qu'elle n'est pas liée à une BDD, il faut juste entrer quelques données afin de les faires ressortir sur Word, elles aussi).
    Je n'avais pas tout lu, l'usage d'un DBGrid est motivé si tu veux montrer à l'utilisateur le contenu (partiel ou complet) d'un ensemble de données (selon la terminologie des bases de données en Delphi).

    Ton problème est mal formulé, quelles sont ces données (d'où les récupères-tu ?) comment vas-tu les passer à word ?

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CleeM
    histoire de ne pas trop poster sur le forum, j'ai un peu honte de mes questions des fois. :p
    Tu peux poster autant que tu veux il n'y a pas de quota, maintenant il faut te souvenir de cette pertinente remarque d'e-ric qui elle induit le quota de réponse qui te seront faîtes
    Citation Envoyé par e-ric
    un peu de reflexion n'a jamais tué personne
    Je confirme

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Par défaut
    Désolé si je me suis mal exprimé, cette DBGrid me sert de tableau où l'utilisateur peut rentrer des données, mais j'ai trouver une alternative en mettant des LibeledEdit et en mettant ces données dans un tableau se trouvant dans le Document Word. Donc c'est bon!!! =)

    Sinon Laurent, merci pour la réponse, mais c'est que des fois j'ai un peu honte d'ouvrir un topic pour une question bête. ))

    Merci à tous pour ces réponses, cette partie de mon programme est finie!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans noms d'objets avec espaces
    Par Macadoshis dans le forum Débuter
    Réponses: 1
    Dernier message: 14/05/2010, 17h10
  2. utiliser une variable comme nom d'objet! est-ce possible?
    Par Rusty2096 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 07/06/2009, 15h33
  3. [POO] nom d'objet en variable dynamique
    Par mayadev dans le forum Langage
    Réponses: 3
    Dernier message: 17/04/2009, 15h26
  4. [XLST] Nom de fichier avec variable
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 07/05/2008, 09h37
  5. Réponses: 3
    Dernier message: 09/03/2007, 11h23

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