Inclure un objet dans une picturebox

Résolu
Coconut29200 Messages postés 15 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 4 juin 2007 - 4 avril 2007 à 09:57
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 4 avril 2007 à 12:02
Bonjour

je cherche,je cherche mais je n'ai toujours pas trouvé comment attaché un objet à une picture box

Plus de précision :

la picturebox est crée à la base et je creer un objet dynamiquement
avec un "truc" de ce genre :    
     

Private Sub Command1_Click()

Set c = Me.Controls.Add("vb.combobox", "mes2")

c.visible = true

c.top= blabla

c.height = blabla

.....

end sub


Comment faire pour que quand je fasse

picture1.visible = false

l'objet(ici le combobox)qui se trouve dedans disparaisse aussi


Merci

9 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 avril 2007 à 10:07
Salut,
Il faut qu'à l'ajout du contrôle tu spécifie l'objet qui le contient (Propriété Container) ici tu veux que le combo soit dans Picture1
donc par exemple

Dim c As Control
Set c = Me.Controls.Add("vb.combobox", "mes2")
c.Visible = True
c.Top = 30
c.Left = 40
Set c.Container = Picture1, ----
[code.aspx?ID=41455 By Renfield]
ATTENTION: si je me souvient bien, les propriété left, top, sont donc par rapport a la picturebox

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 avril 2007 à 10:52
Salut,
Si tu veux charger tes combo et joué avec leur propriété index, tu dois les charger différement.
D'abord tu dois créer un groupe de contrôle.
Place un combo sur ta feuille et mets sa propriété Index à 0

Puis teste l'exemple suivant.
Il te crée 4 nouveaux combo et les place dans la picture box
Libre à toi d'utiliser ou non le contrôle de "base" (tu peux joue avec visible si tu veux juste qu'il soit la source)

Private Sub Command1_Click()
Dim i As Integer
   For i = 1 To 4
       'Charge le controle d'indice i
       Call Load(Combo1(i))
       With Combo1(i)
           'Spécifie le conteneur
           Set .Container = Picture1
           .Visible = True
           .Top = (i - 1) * Combo1(0).Height
           .Left = 15
       End With
   Next

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
Coconut29200 Messages postés 15 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 4 juin 2007
4 avril 2007 à 10:17
Marche nikel

Merci Beaucoup!
0
Coconut29200 Messages postés 15 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 4 juin 2007
4 avril 2007 à 10:44
Une petite question supplémenataire

quand je cree mon combobox(de la meme maniére que ci dessus)

comment est ce que je lui defini son numero d' index(parcequ elle doit en avoir un dans mon cas)


c.index=2

ne marche pas par exemple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Coconut29200 Messages postés 15 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 4 juin 2007
4 avril 2007 à 11:11
Merci!!

Tant qu'a faire; comment fait on pour ouvrir un fichier word deja
existant(et l'on connait son emplacement sur le disque) et quel
composant faut il charger pour cela sous VB6.0
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 avril 2007 à 11:56
Pour des questions multiples, tu es mieux de démarrer un nouveau message. Tu auras plus de chances d'avoir des réponses, surtout que celui-ci a été "marqué" comme accepté...

MPi
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 avril 2007 à 11:59
Salut,

il y a plus simple mais ça gère si c'est déjà ouvert ou non :

Private Const OF_SHARE_EXCLUSIVE =  &H10
Private Const OF_SHARE_DENY_READ = &H30
Private Const MyDoc      As String = "C:\Chemin\Nouveau.doc"
Private Const MyBook     As String = "C:\Chemin\Nouveau.xls"

Public Enum TypeAppli
    xlApp
    wdApp
End Enum

Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long

Public Sub TestFile(FileToOpen As String, Appli As TypeAppli)
    Dim MonApp      As Object, MonDoc As Object
    Dim NomAppli    As String
    Dim hFile       As Long
    
hFile = -1
If Appli = wdApp Then NomAppli = "Word.Application" Else NomAppli = "Excel.Application"
hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
If hFile <> -1 Then 'pas ouvert
    lclose (hFile)
    
        Set MonApp = CreateObject(NomAppli)
        MonApp.Visible = True
        If Appli = wdApp Then
            Set MonDoc = MonApp.Documents.Open(MyDoc)
        Else
            Set MonDoc = MonApp.Workbooks.Open(MyBook)
        End If
ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
    lclose (hFile)
    
        Set MonApp = CreateObject(NomAppli)
        MonApp.Visible = True
        If Appli = wdApp Then
            Set MonDoc = MonApp.Documents.Open(MyDoc, , True)
        Else
            Set MonDoc = MonApp.Workbooks.Open(MyBook, , True)
        End If
End If
    
End Sub

Sub EXEMPLE()
    Call TestFile(MyDoc, wdApp)
    Call TestFile(MyBook, xlApp)
End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 avril 2007 à 12:02
Arf, j'avais fait une MAJ du snippet :

Private Const OF_SHARE_EXCLUSIVE = &H10
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Function OpenDocXlsFile(FileToOpen As String) As Long
'   retourne  :
'   -1  -> erreur
'   0   -> fichier déjà ouvert, ouverture en lecture  seule
'   1   -> ouverture première  instance
    OpenDocXlsFile = -1
    
    Dim sExt        As String
    Dim NomAppli    As String
'   type de fichier  par son extension
    If LenB(FileToOpen) < 16 Then
        Exit Function
    Else
        sExt = LCase$(RightB$(FileToOpen, 8))
        If sExt = ".doc" Or sExt = ".rtf" Then
            NomAppli = "Word"
        ElseIf sExt = ".xls" Or sExt = ".csv" Then
            NomAppli = "Excel"
        Else
            Exit Function
        End If
    End If
'   ouverture  office
    Dim MonApp      As Object
    Dim MonDoc      As Object
    Dim hFile       As Long
    
    hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
    If hFile <> -1 Then 'pas ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            Set MonDoc = MonApp.Documents.Open(FileToOpen)
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen)
        End If
        OpenDocXlsFile = 1
    ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            On Local Error Resume Next
            Set MonDoc = MonApp.Documents.Open(FileToOpen, , True)
            If Err.Number = 4198 Then
'               word 2000, utilisateur fait  ANNULER
                Err.Clear
                GoTo Lbl_Exit
            End If
            On Error GoTo 0
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen, , True)
        End If
        OpenDocXlsFile = 0
    End If
    MonApp.Visible = True
    
Lbl_Exit:
    Set MonDoc = Nothing
    Set MonApp = Nothing
End Function

'    EXEMPLE
Private Sub Form_Load()
    Debug.Print "Word : " & OpenDocXlsFile("C:\Nouveau  Document Microsoft Word.doc")
    Debug.Print "Excel : " & OpenDocXlsFile("C:\test.xls")
    
    Unload Me
End Sub

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 avril 2007 à 12:02
Re,
Je suis de l'avis de .
Néamoins voici comment faire pour ouvrir un document Word Existant.
1- Ajouter la référence Microsoft Word 9.0 Object Library (9.0 ou équivalent) ajout référence Menu Projet => Références.
2- Tester le code ci dessous.

Private Sub Form_Load()
Dim WrdApp As New Word.Application
Dim WrdDoc As Word.Document
   Set WrdDoc = WrdApp.Documents.Open("C\Toto.doc")
   
   '[...]Toutes les opérations sur le document
   
   'Sauvegarde du doc
   Call WrdDoc.Close(True)
   'Fermeture de l'app word
   Call WrdApp.Quit
   
   'Destrcution des objets
   Set WrdDoc = Nothing
   Set WrdApp = Nothing

End Sub , ----
[code.aspx?ID=41455 By Renfield]
NOTE: Lorsque tu cherches du code tout fait va faire une tour sur [www.codyx.org www.codyx.org] pour trouver des bouts de code très utiles.

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous