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

VB 6 et antérieur Discussion :

Faire un OCX avec VB5CCE


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut Faire un OCX avec VB5CCE
    Merci à tout contributeur qui pourra m'aider à avancer : je me lance dans un truc tout nouveau pour moi : la création d'un OCX.

    Il est destiné à rendre conviviale l'utilisation d'un fichier ".ini" dans un programme. Le fichier a une structure très simple : une série de "sections", chacune contenant une série de "variables", initialisées ou non. Il se présentera donc sous la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [Section1]
    variable1_1=1
    variable1_2=2
    [Section2]
    variable2_1=3
    ...etc...
    Et, à l'utilisation, je souhaite que le programmeur puisse utiliser ces informations sous la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    dim I as new Ini
    with I
    .fichier=App.path + "/Mon.ini"
    .load
    ...
    toto=.Section1.variable1_1 + .Section2.variable2_1
    ...
    .Section1.variable1_2 = 675
    ...
    .save
    end with
    Mais là, je sens toute l'expérience qui me manque en VB... Est-il possible de concevoir cet ocx, avec la structure arborescente que suppose cette utilisation ? Je pourrais créer des frames en lisant le fichier ini, à chaque nouvelle section, puis, dans les frames, des textbox pour chaque variable, mais je ne crois pas que ça va marcher, il ne me semble pas qu'on accède à la textbox "A" dans la frame "F" en écrivant "F.A", n'est-ce pas ?

    Je n'ai pas (encore) trouvé de tutoriel pour créer des ocx.

    Merci de votre aide.

    AMIcalement.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Pour commencer :
    1 - Ouvre un nouveau groupe de projets(Ctlgroup).
    2 - Renomme UserControl1 en MyControl par exemple puis place dessus tout contrôle que tu estimes nécessaire. Enregistre le .vbg
    3 - Vas dans le menu Add-Ins et clique sur Activex Control Interface Wizard...
    4 - Dans la liste des éléments à droite, laisse ceux dont tu as besoin et supprime les autres en les sélectionnant
    puis appuie sur le bouton intitulé <
    4.1-Si tu as besoin d'autres, choisis-les dans la liste de gauche puis le bouton >
    5 - Quand tu auras fini, bouton Next>
    6 - Ajoute de nouveaux éléments si besoin est(en utilisant le bouton New...), en donnant leurs types ensuite bouton Next>
    7 - Dans la nouvelle fenêtre, attribue la propriété, évènement ou méthode au contrôle de ton choix(selon le besoin bien sûr)
    8 - Dans la fenêtre qui suit, donne le type de données(pour chaque élément) et saisis la valeur par défaut
    correspondante si elle est accessible.
    9 - Une fois terminé, clique le bouton Next>
    10 - Bouton Finish et enregistre le sommaire dans le dossier du projet pour éventuelle consultation.
    11 - Retourne dans l'EDI pour consulter le code ajouté au contrôle ......

    Bon courage et bonne continuation...
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Merci et encore merci. Pour le moment, je rame grave... et je reviendrai sans doute plusieurs fois.

    En réfléchissant à mes questions ci-dessus, j'ai pensé que si je voulais créer un objet "Ini" (nommé "MonIni", par exemple) et accéder à ses propriétés (ses sections et ses paramètres) en utilisant une syntaxe du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      toto = MonIni.section1.toto
    il faudrait que l'objet "Ini" contienne une collections d'objets "section", que je devrai donc créer d'abord, puis instancier ensuite de façon récurrente dans l'objet "Ini" au cours de la lecture initiale du fichier ".in"i.

    Mon analyse est-elle juste, et cela est-il faisable avec VB5CCE ?

    AMIcalement.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    @L'autodidacte

    En suivant tes conseils, j'ai l'impression d'avancer (un peu dans le brouillard quand-même : il y a des concepts que je ne maitrise pas encore...), mais là, je tombe sur un bec : j'essaie de me faire mon "flexgrid" à moi (avec possibilité d'écrire dans les cellules), et j'ai donc introduit une "Matrice" (l'équivalent de leur "TextMatrix"), et je vois que le ActiveX Control Interface Wizard a introduit dans le code les routines UserControl_ReadProperties et UserControl_WriteProperties dans lesquelles je trouve les appels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        m_Matrice = PropBag.ReadProperty("Matrice", m_def_Matrice)
    ...
        Call PropBag.WriteProperty("Matrice", m_Matrice, m_def_Matrice)
    Que je ne peux pas laisser tels-quels, puisque ma Matrice est un tableau, mais de quoi s'agit-il ? Qu'est-ce que c'est que cet objet PropBag ?

    Merci de m'accorder encore un peu d'attention.

    AMIcalement

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    L'objet PropBag est déclaré ainsi : Dim PropBag As PropertyBag.

    Dans MSDN, on trouve :
    Un objet PropertyBag contient des informations devant être enregistrées puis restaurées au travers d'appels à un objet.
    Remarques
    Un objet PropertyBag est passé à un objet par le biais de l'événement ReadProperties et de l'événement WriteProperties dans le but d'enregistrer et de restaurer l'état de l'objet. Les méthodes de l'objet PropertyBag permettent à celui-ci de lire ou d'écrire ses propres propriétés. La méthode ReadProperty de l'objet PropertyBag sert à lire la valeur d'une propriété tandis que sa méthode WriteProperty permet d'écrire la valeur d'une propriété. La valeur d'une propriété peut elle-même constituer un objet. Dans pareil cas, l'objet PropertyBag tentera de l'enregistrer.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Encore une fois : MERCI. Je dois avouer que je n'avais pas cherché d'aide sur lemot clé "PropertyBag". Ce matin, j'ai essayé de le faire, et, première constatation, le winhlp32.exe de XP, que j'avais remis dans mon C:\windows il y a quelques jours (avec les droits qui vont bien) a de nouveau été remplacé par µ$ !!! Ils se vantent de nous filer gratos ce VB5CCE, ou de continuer à laisser VB6 compatible avec Win10, mais ils empêchent très consciencieusement l'aide de fonctionner... Je l'ai remis, pour combien de temps ?
    Deuxième constatation : je n'ai pas de fichiers d'aide VB5 qui serait venu avec VB5CCE, et, troisième constatation : je peux trouver de l'aide en anglais sur PropertuBag, mais si je pouvais avoir le MSDN français de VB5, ça serait plus cool.

    Y a-t-il des réponses à tout ça ?

    AMIcalement.

Discussions similaires

  1. Peut-on faire du cluster avec winXP ?
    Par wikers dans le forum Windows XP
    Réponses: 37
    Dernier message: 02/06/2009, 11h13
  2. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13
  3. [INDY] comment faire un 'POST' avec idHTTP??
    Par gamez dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/05/2004, 19h02
  4. Faire une JFrame avec LookAndFeel
    Par aburner dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/12/2003, 08h54
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

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