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

IHM Discussion :

Créer dynamiquement un ActiveX sur un formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut Créer dynamiquement un ActiveX sur un formulaire
    Bonjour,
    Je voudrais créer un ActiveX (image) sur un formulaire (en Access97).
    Je pense que le code de création est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim fimg As Object
    Set fimg = CreateObject("Forms.Image.1")
    Mais pour placer l'objet sur le formulaire ???????
    Peut-on déjà lui passer des paramètres style :
    fimg.Left = .....
    fimg.Top = .....
    J'ai déjà fais ça sous d'autres languages mais pas en VBA.
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    Je n'ai jamais utilisé d'ActiveX en VBA, alors si j'ai posé une question stupide j'accepte que la honte me tombe dessus......
    A+ Merci

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,
    Tu peux peut-être essayer ceci:
    En mode création sur le formulaire, tu cliques dans la barre d'outils sur le bouton représentant un marteau et un tournevis, souligné par trois petits points. Cela devrait lister les contrôles ActiveX disponibles.
    Tu choisis celui qui t'intéresse et tu le places sur le formulaire.
    La référence à la bibliothèque de l'objet s'ajoute toute seule.
    Ensuite tu ajustes ses propriétés par VBA.
    Example:
    Sur formulaire un j'ai placé un contrôle ActiveX "DHTML Edit Control Safe for Scripting for IE5"
    Dans l'évênement sur Ouverture du formulaire j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Open(Cancel As Integer)
    Dim CtlAx As DHTMLEDLib.DHTMLSafe
    
    ' Le contrôle inséré dans le formulaire s'appelle CtlActiveX6
    Set CtlAx = Me.Controls("CtlActiveX6").Object
    CtlAx.DocumentHTML = "<html><head></head><body>" & _
     "<IMG SRC=http://www.developpez.net/forums/ima...orum_new.gif>" & _
     "</body></html>"
    
    End Sub
    A+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    Merci pour ta réponse, mais ce que je veux faire c'est créer l'ActiveX par programmation.... et non manuellement......J'ai eus beau fouillé les FAQ, je n'ai rien trouvé.
    A+

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Ok, dans ce cas là regardes la fonction CreateControl dans l'aide d'Acces.
    Par contre il faut que le formulaire soit ouvert en mode création.
    Je ne suis pas sûr que l'on puisse ajouter dynamiquement un contrôle dans un formulaire Access ouvert en mode Visualisation, la collection Controls n'ayant pas de méthode pour en ajouter/enlever.
    A+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    J'ai déjà essayé CreateControl, mais ce n'est pas pour les ActiveX. Il faut utiliser CreateObject, mais qui ne me crée apparement rien sur le formulaire (en mode création bien sur).....je creuse.......
    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Erreur, j'ai trouvé (par hasard) un truc interressant sur CreateControl, qu'en utilisant le type acCustomControl je pouvait créer des ActiveX, mais le Hic est que je ne vois pas où passer le nom de l'ActiveX ou de l'object crée...... (peut-être dans "parent" mais je ne vois pas la relation)
    idées à venir.
    A+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    J'avance (tout doucement),
    j'ai ecris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim ctl As Control
    Dim chemvar As String
    Set DB = CurrentDb
    chemvar = LCase(ExtraitCheminApp(DB.Name))
    Set DB = Nothing
    DoCmd.OpenForm "FMen1", acDesign
    Set ctl = CreateControl("FMen1", acCustomControl, acDetail, "", "", 300, 300, 300, 300)
    ctl.OLEClass = "Microsoft Forms 2.0"
    ctl.Class = "Forms.Image.1"
    ctl.Name = "titi"
    Set ctl = Nothing
    Celà me crée bien un "controle" sur la Form.
    Au niveau des propriétés il est bien déclaré comme Control ActiveX : titi.
    Par contre je ne récupère aucune des propriétés de l'ActiveX à savoir dans mon cas les plus importantes, PicturesSizeMode et la suite, d'ou moralité je ne peux pas mettre d'image dedans.
    J'ai du oublié quelques chose ??????
    A+

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    met un point d'arrêt sur :
    et regarde dans la fenêtre d'affichage des variables
    les propriétés sont sûrement dans ctl.object.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    Non malheureusement le ctl ne contient pas les propriété du controle image.
    D'ailleurs faut-il déclarer ctl en controle ou en objet ??????
    Merci A+

  11. #11
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    ctl c'est un control (pour faire createcontrol c'est logique)

    l'objet OLE c'est ctl.Object

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Oui c'est pour ça que j'ai déclaré ctl en Control.
    Mais comment faire pour récupérer les propriétés de l'ActiveX image .
    A+

  13. #13
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    mouais tu peux pas faire ça apparemment
    il te faut un active X déjà créé dans un autre formulaire et copier sa propriété OLEData

    http://support.microsoft.com/default...%3Bfr%3B210125

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    Arkham46, tu as vu juste...
    Quand on créer un ActiveX avec CreateControl, on ne créer que l'enveloppe.
    Pour s'en sortir il faut créer sur la Feuille Active un ActiveX modèle que l'on nomme ModImg (pour mon exemple)
    Ensuite il faut donner au Controle que l'on veut créer les valeurs OLEData du modèle.
    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
    Dim ctl As Object
    Dim chemvar As String
    Set DB = CurrentDb
    chemvar = LCase(ExtraitCheminApp(DB.Name))
    Set DB = Nothing
    DoCmd.OpenForm "FMen1", acDesign
    Set ctl = CreateControl("FMen1", acCustomControl, acDetail, "", "", 400, 100, 200, 200)
    ctl.Name = "titi"
    ctl.OleData = Forms!MaintenanceMenu!ModImg.OleData
    ctl.Left = 400
    ctl.Top = 400
    ctl.Height = 300
    ctl.Width = 300
    ctl.SpecialEffect = 0
    ctl.BorderStyle = 0
    ctl.Picture = LoadPicture(chemvar & "\Fermer.gif")
    Set ctl = Nothing
    Ca marche nickel
    Mon code est light, il ne faut pas oublier les Restore, Close......
    On peut créer des ActiveX autant qu'on veut avec le même modèle.
    Merci pour toutes ces infos, à bientôt

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    Je renviens sur le sujet, car il y a un détail qui m"échappe....
    Le controle posé sur la Form en mode création est OK, el l'image chargée dans le controle (gif avec LoadPicture) a bien le fond transparent.
    Le problème, lorsque j'ouvre la Form (OpenForm) le fond transparent disparait.
    La, je ne comprend plus.....
    A+

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    En vérité, ce n'est pas quand on ouvre la Form que l'on perd la transparence, mais lorsqu'on la sauvegarde......
    Bizarre...
    A+

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 107
    Points : 53
    Points
    53
    Par défaut
    Salut,
    J'ai fais un test, avec la fenetre active, et la fenêtre en mode création cote à cote, avec éxécution du code pas à pas. La création de l'ActiveX avec incorporation de l'image gif donne bien un fond transparent, mais lorsque j'éxécute Docmd.save, acForm, le fond transparent disparait....
    C'est totalement illogique.
    Si idée je suis preneur...
    Merci

Discussions similaires

  1. [Sharepoint 2010] Créer un bouton dupliquer sur un formulaire
    Par lilangel77 dans le forum SharePoint
    Réponses: 3
    Dernier message: 08/04/2015, 15h10
  2. Créer un aperçu d'un .pdf sur un formulaire
    Par mathilde50 dans le forum IHM
    Réponses: 15
    Dernier message: 09/08/2007, 14h37
  3. Retrouver sur un clic un composant créer dynamiquement
    Par PadawanDuDelphi dans le forum Composants VCL
    Réponses: 4
    Dernier message: 10/10/2006, 11h17
  4. Réponses: 1
    Dernier message: 15/09/2005, 11h59

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