Dans l'API GetOpenFileName (ouverture de la boîte de dialogue donc)
Ça marche si je choisis un fichier pour mettre dans une PictureBoxe, mais:
Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>, ben ça me
ferme l'appli, il doit y avoir des params de retour à rediriger pour éviter
ça, mais je ne sais pas lesquels, avez-vous une idée, voici le code (une
tartine cette API):
------------------------------------------------
Dim cheficPH As String * 255
'
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'
Private Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum
'
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'
Private Function OpenFileDialog(Optional DialogTitle As String, Optional
sFilter As String, Optional Flags As OFN_Constants, Optional InitialDir As
String, Optional hwndOwner As Long, Optional hInstance As Long) As String
Dim OFName As OPENFILENAME
'
OFName.lStructSize = Len(OFName)
OFName.hwndOwner = hwndOwner
OFName.hInstance = hInstance
OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar & "*.jpg" &
vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar & "*.bmp" & vbNullChar &
vbNullChar ' filtres fichiers
OFName.lpstrFile = Space$(254)
OFName.nMaxFile = 255
OFName.lpstrFileTitle = Space$(254)
OFName.nMaxFileTitle = 255
OFName.lpstrInitialDir = InitialDir
OFName.lpstrTitle = "Sélectionner votre image" ' titre
OFName.Flags = OFN_READONLY ' [X] lecture seule
If GetOpenFileName(OFName) Then: OpenFileDialog =
Trim$(OFName.lpstrFile)
'
cheficPH = OFName.lpstrFile
End Function
Sub Command3_Click() 'photo
Call OpenFileDialog 'APPEL
''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!!
If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH)
ChDrive App.Path
ChDir App.Path
End Sub
--
Merci, @+, bye, Joe : ng75@noos.fr
----------------------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison.
----------------------------------------------------------
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/soir,
Ce code semble être celui de la faq. Il s'agit donc d'une fonction qui retourne une valeur (la variable cheficPH est inutile) Il suffit de stocker le résultat de la fonction et si ce résultat est une chaine vide, on sait qu'on a annulé. Note que la procédure à un paramètre permettant de passer des flags. aussi, il est inutile de le hardcoder dans la fonction.
Dim strFichier As String strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then 'Traitement si fichier Else Unload Me End If
"le_troll" a écrit dans le message de news:OJPsA6r$
Bonjour,
Dans l'API GetOpenFileName (ouverture de la boîte de dialogue donc) Ça marche si je choisis un fichier pour mettre dans une PictureBoxe, mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>, ben ça me ferme l'appli, il doit y avoir des params de retour à rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une idée, voici le code (une tartine cette API): ------------------------------------------------ Dim cheficPH As String * 255 ' Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long ' Private Enum OFN_Constants OFN_ALLOWMULTISELECT = &H200 OFN_CREATEPROMPT = &H2000 OFN_DONTADDTORECENT = &H2000000 OFN_ENABLEHOOK = &H20 OFN_ENABLEINCLUDENOTIFY = &H400000 OFN_ENABLESIZING = &H800000 OFN_ENABLETEMPLATE = &H40 OFN_ENABLETEMPLATEHANDLE = &H80 OFN_EX_NOPLACESBAR = &H1 OFN_EXPLORER = &H80000 OFN_EXTENSIONDIFFERENT = &H400 OFN_FILEMUSTEXIST = &H1000 OFN_FORCESHOWHIDDEN = &H10000000 OFN_HIDEREADONLY = &H4 OFN_LONGNAMES = &H200000 OFN_NOCHANGEDIR = &H8 OFN_NODEREFERENCELINKS = &H100000 OFN_NOLONGNAMES = &H40000 OFN_NONETWORKBUTTON = &H20000 OFN_NOREADONLYRETURN = &H8000 OFN_NOTESTFILECREATE = &H10000 OFN_NOVALIDATE = &H100 OFN_OVERWRITEPROMPT = &H2 OFN_PATHMUSTEXIST = &H800 OFN_READONLY = &H1 OFN_SHAREAWARE = &H4000 OFN_SHAREFALLTHROUGH = 2 OFN_SHARENOWARN = 1 OFN_SHAREWARN = 0 OFN_SHOWHELP = &H10 OFN_USEMONIKERS = &H1000000 End Enum ' Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type ' Private Function OpenFileDialog(Optional DialogTitle As String, Optional sFilter As String, Optional Flags As OFN_Constants, Optional InitialDir As String, Optional hwndOwner As Long, Optional hInstance As Long) As String Dim OFName As OPENFILENAME ' OFName.lStructSize = Len(OFName) OFName.hwndOwner = hwndOwner OFName.hInstance = hInstance OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar & "*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar & "*.bmp" & vbNullChar & vbNullChar ' filtres fichiers OFName.lpstrFile = Space$(254) OFName.nMaxFile = 255 OFName.lpstrFileTitle = Space$(254) OFName.nMaxFileTitle = 255 OFName.lpstrInitialDir = InitialDir OFName.lpstrTitle = "Sélectionner votre image" ' titre OFName.Flags = OFN_READONLY ' [X] lecture seule If GetOpenFileName(OFName) Then : OpenFileDialog > Trim$(OFName.lpstrFile) ' cheficPH = OFName.lpstrFile End Function
Sub Command3_Click() 'photo Call OpenFileDialog 'APPEL
''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!!
If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH) ChDrive App.Path ChDir App.Path End Sub
Bonjour/soir,
Ce code semble être celui de la faq.
Il s'agit donc d'une fonction qui retourne une valeur (la variable cheficPH
est inutile)
Il suffit de stocker le résultat de la fonction et si ce résultat est une
chaine vide, on sait qu'on a annulé.
Note que la procédure à un paramètre permettant de passer des flags. aussi,
il est inutile de le hardcoder dans la fonction.
Dim strFichier As String
strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then
'Traitement si fichier
Else
Unload Me
End If
"le_troll" <le_trol@paris.fr> a écrit dans le message de
news:OJPsA6r$DHA.3400@tk2msftngp13.phx.gbl
Bonjour,
Dans l'API GetOpenFileName (ouverture de la boîte de dialogue
donc)
Ça marche si je choisis un fichier pour mettre dans une PictureBoxe,
mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>,
ben ça me ferme l'appli, il doit y avoir des params de retour à
rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une
idée, voici le code (une tartine cette API):
------------------------------------------------
Dim cheficPH As String * 255
'
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'
Private Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum
'
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'
Private Function OpenFileDialog(Optional DialogTitle As String,
Optional sFilter As String, Optional Flags As OFN_Constants, Optional
InitialDir As String, Optional hwndOwner As Long, Optional hInstance
As Long) As String Dim OFName As OPENFILENAME
'
OFName.lStructSize = Len(OFName)
OFName.hwndOwner = hwndOwner
OFName.hInstance = hInstance
OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar &
"*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar &
"*.bmp" & vbNullChar & vbNullChar ' filtres fichiers
OFName.lpstrFile = Space$(254)
OFName.nMaxFile = 255
OFName.lpstrFileTitle = Space$(254)
OFName.nMaxFileTitle = 255
OFName.lpstrInitialDir = InitialDir
OFName.lpstrTitle = "Sélectionner votre image" ' titre
OFName.Flags = OFN_READONLY ' [X] lecture seule
If GetOpenFileName(OFName) Then : OpenFileDialog > Trim$(OFName.lpstrFile)
'
cheficPH = OFName.lpstrFile
End Function
Sub Command3_Click() 'photo
Call OpenFileDialog 'APPEL
''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!!
If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH)
ChDrive App.Path
ChDir App.Path
End Sub
Ce code semble être celui de la faq. Il s'agit donc d'une fonction qui retourne une valeur (la variable cheficPH est inutile) Il suffit de stocker le résultat de la fonction et si ce résultat est une chaine vide, on sait qu'on a annulé. Note que la procédure à un paramètre permettant de passer des flags. aussi, il est inutile de le hardcoder dans la fonction.
Dim strFichier As String strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then 'Traitement si fichier Else Unload Me End If
"le_troll" a écrit dans le message de news:OJPsA6r$
Bonjour,
Dans l'API GetOpenFileName (ouverture de la boîte de dialogue donc) Ça marche si je choisis un fichier pour mettre dans une PictureBoxe, mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>, ben ça me ferme l'appli, il doit y avoir des params de retour à rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une idée, voici le code (une tartine cette API): ------------------------------------------------ Dim cheficPH As String * 255 ' Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long ' Private Enum OFN_Constants OFN_ALLOWMULTISELECT = &H200 OFN_CREATEPROMPT = &H2000 OFN_DONTADDTORECENT = &H2000000 OFN_ENABLEHOOK = &H20 OFN_ENABLEINCLUDENOTIFY = &H400000 OFN_ENABLESIZING = &H800000 OFN_ENABLETEMPLATE = &H40 OFN_ENABLETEMPLATEHANDLE = &H80 OFN_EX_NOPLACESBAR = &H1 OFN_EXPLORER = &H80000 OFN_EXTENSIONDIFFERENT = &H400 OFN_FILEMUSTEXIST = &H1000 OFN_FORCESHOWHIDDEN = &H10000000 OFN_HIDEREADONLY = &H4 OFN_LONGNAMES = &H200000 OFN_NOCHANGEDIR = &H8 OFN_NODEREFERENCELINKS = &H100000 OFN_NOLONGNAMES = &H40000 OFN_NONETWORKBUTTON = &H20000 OFN_NOREADONLYRETURN = &H8000 OFN_NOTESTFILECREATE = &H10000 OFN_NOVALIDATE = &H100 OFN_OVERWRITEPROMPT = &H2 OFN_PATHMUSTEXIST = &H800 OFN_READONLY = &H1 OFN_SHAREAWARE = &H4000 OFN_SHAREFALLTHROUGH = 2 OFN_SHARENOWARN = 1 OFN_SHAREWARN = 0 OFN_SHOWHELP = &H10 OFN_USEMONIKERS = &H1000000 End Enum ' Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type ' Private Function OpenFileDialog(Optional DialogTitle As String, Optional sFilter As String, Optional Flags As OFN_Constants, Optional InitialDir As String, Optional hwndOwner As Long, Optional hInstance As Long) As String Dim OFName As OPENFILENAME ' OFName.lStructSize = Len(OFName) OFName.hwndOwner = hwndOwner OFName.hInstance = hInstance OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar & "*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar & "*.bmp" & vbNullChar & vbNullChar ' filtres fichiers OFName.lpstrFile = Space$(254) OFName.nMaxFile = 255 OFName.lpstrFileTitle = Space$(254) OFName.nMaxFileTitle = 255 OFName.lpstrInitialDir = InitialDir OFName.lpstrTitle = "Sélectionner votre image" ' titre OFName.Flags = OFN_READONLY ' [X] lecture seule If GetOpenFileName(OFName) Then : OpenFileDialog > Trim$(OFName.lpstrFile) ' cheficPH = OFName.lpstrFile End Function
Sub Command3_Click() 'photo Call OpenFileDialog 'APPEL
''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!!
If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH) ChDrive App.Path ChDir App.Path End Sub
le_troll
Bonjour,
Merci, ça marche, en réponse, petite erreur je pense?
Le problème étant la fermeture de l'appli, ce n'est pas en retour
Unload Me
mais
"Load Me" -- ----------------------------------- Merci, @+, bye, Joe : ---------------------------------------------------------- Avec une hache, celui qui tient le manche a toujours raison. ----------------------------------------------------------
"François Picalausa" a écrit dans le message de news: u$w0JVs$
Bonjour/soir,
Ce code semble être celui de la faq. Il s'agit donc d'une fonction qui retourne une valeur (la variable
cheficPH
est inutile) Il suffit de stocker le résultat de la fonction et si ce résultat est une chaine vide, on sait qu'on a annulé. Note que la procédure à un paramètre permettant de passer des flags.
aussi,
il est inutile de le hardcoder dans la fonction.
Dim strFichier As String strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then 'Traitement si fichier Else Unload Me End If
"le_troll" a écrit dans le message de news:OJPsA6r$ > Bonjour, > > Dans l'API GetOpenFileName (ouverture de la boîte de dialogue > donc) > Ça marche si je choisis un fichier pour mettre dans une PictureBoxe, > mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>, > ben ça me ferme l'appli, il doit y avoir des params de retour à > rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une > idée, voici le code (une tartine cette API): > ------------------------------------------------ > Dim cheficPH As String * 255 > ' > Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias > "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long > ' > Private Enum OFN_Constants > OFN_ALLOWMULTISELECT = &H200 > OFN_CREATEPROMPT = &H2000 > OFN_DONTADDTORECENT = &H2000000 > OFN_ENABLEHOOK = &H20 > OFN_ENABLEINCLUDENOTIFY = &H400000 > OFN_ENABLESIZING = &H800000 > OFN_ENABLETEMPLATE = &H40 > OFN_ENABLETEMPLATEHANDLE = &H80 > OFN_EX_NOPLACESBAR = &H1 > OFN_EXPLORER = &H80000 > OFN_EXTENSIONDIFFERENT = &H400 > OFN_FILEMUSTEXIST = &H1000 > OFN_FORCESHOWHIDDEN = &H10000000 > OFN_HIDEREADONLY = &H4 > OFN_LONGNAMES = &H200000 > OFN_NOCHANGEDIR = &H8 > OFN_NODEREFERENCELINKS = &H100000 > OFN_NOLONGNAMES = &H40000 > OFN_NONETWORKBUTTON = &H20000 > OFN_NOREADONLYRETURN = &H8000 > OFN_NOTESTFILECREATE = &H10000 > OFN_NOVALIDATE = &H100 > OFN_OVERWRITEPROMPT = &H2 > OFN_PATHMUSTEXIST = &H800 > OFN_READONLY = &H1 > OFN_SHAREAWARE = &H4000 > OFN_SHAREFALLTHROUGH = 2 > OFN_SHARENOWARN = 1 > OFN_SHAREWARN = 0 > OFN_SHOWHELP = &H10 > OFN_USEMONIKERS = &H1000000 > End Enum > ' > Private Type OPENFILENAME > lStructSize As Long > hwndOwner As Long > hInstance As Long > lpstrFilter As String > lpstrCustomFilter As String > nMaxCustFilter As Long > nFilterIndex As Long > lpstrFile As String > nMaxFile As Long > lpstrFileTitle As String > nMaxFileTitle As Long > lpstrInitialDir As String > lpstrTitle As String > Flags As Long > nFileOffset As Integer > nFileExtension As Integer > lpstrDefExt As String > lCustData As Long > lpfnHook As Long > lpTemplateName As String > End Type > ' > Private Function OpenFileDialog(Optional DialogTitle As String, > Optional sFilter As String, Optional Flags As OFN_Constants, Optional > InitialDir As String, Optional hwndOwner As Long, Optional hInstance > As Long) As String Dim OFName As OPENFILENAME > ' > OFName.lStructSize = Len(OFName) > OFName.hwndOwner = hwndOwner > OFName.hInstance = hInstance > OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar & > "*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar & > "*.bmp" & vbNullChar & vbNullChar ' filtres fichiers > OFName.lpstrFile = Space$(254) > OFName.nMaxFile = 255 > OFName.lpstrFileTitle = Space$(254) > OFName.nMaxFileTitle = 255 > OFName.lpstrInitialDir = InitialDir > OFName.lpstrTitle = "Sélectionner votre image" ' titre > OFName.Flags = OFN_READONLY ' [X] lecture seule > If GetOpenFileName(OFName) Then : OpenFileDialog > > Trim$(OFName.lpstrFile) > ' > cheficPH = OFName.lpstrFile > End Function > > Sub Command3_Click() 'photo > Call OpenFileDialog 'APPEL > > ''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!! > > If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH) > ChDrive App.Path > ChDir App.Path > End Sub
Bonjour,
Merci, ça marche, en réponse, petite erreur je pense?
Le problème étant la fermeture de l'appli, ce n'est pas en retour
Unload Me
mais
"Load Me"
-- -----------------------------------
Merci, @+, bye, Joe : ng75@noos.fr
----------------------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison.
----------------------------------------------------------
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de news:
u$w0JVs$DHA.1212@TK2MSFTNGP12.phx.gbl...
Bonjour/soir,
Ce code semble être celui de la faq.
Il s'agit donc d'une fonction qui retourne une valeur (la variable
cheficPH
est inutile)
Il suffit de stocker le résultat de la fonction et si ce résultat est une
chaine vide, on sait qu'on a annulé.
Note que la procédure à un paramètre permettant de passer des flags.
aussi,
il est inutile de le hardcoder dans la fonction.
Dim strFichier As String
strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then
'Traitement si fichier
Else
Unload Me
End If
"le_troll" <le_trol@paris.fr> a écrit dans le message de
news:OJPsA6r$DHA.3400@tk2msftngp13.phx.gbl
> Bonjour,
>
> Dans l'API GetOpenFileName (ouverture de la boîte de dialogue
> donc)
> Ça marche si je choisis un fichier pour mettre dans une PictureBoxe,
> mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>,
> ben ça me ferme l'appli, il doit y avoir des params de retour à
> rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une
> idée, voici le code (une tartine cette API):
> ------------------------------------------------
> Dim cheficPH As String * 255
> '
> Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
> "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
> '
> Private Enum OFN_Constants
> OFN_ALLOWMULTISELECT = &H200
> OFN_CREATEPROMPT = &H2000
> OFN_DONTADDTORECENT = &H2000000
> OFN_ENABLEHOOK = &H20
> OFN_ENABLEINCLUDENOTIFY = &H400000
> OFN_ENABLESIZING = &H800000
> OFN_ENABLETEMPLATE = &H40
> OFN_ENABLETEMPLATEHANDLE = &H80
> OFN_EX_NOPLACESBAR = &H1
> OFN_EXPLORER = &H80000
> OFN_EXTENSIONDIFFERENT = &H400
> OFN_FILEMUSTEXIST = &H1000
> OFN_FORCESHOWHIDDEN = &H10000000
> OFN_HIDEREADONLY = &H4
> OFN_LONGNAMES = &H200000
> OFN_NOCHANGEDIR = &H8
> OFN_NODEREFERENCELINKS = &H100000
> OFN_NOLONGNAMES = &H40000
> OFN_NONETWORKBUTTON = &H20000
> OFN_NOREADONLYRETURN = &H8000
> OFN_NOTESTFILECREATE = &H10000
> OFN_NOVALIDATE = &H100
> OFN_OVERWRITEPROMPT = &H2
> OFN_PATHMUSTEXIST = &H800
> OFN_READONLY = &H1
> OFN_SHAREAWARE = &H4000
> OFN_SHAREFALLTHROUGH = 2
> OFN_SHARENOWARN = 1
> OFN_SHAREWARN = 0
> OFN_SHOWHELP = &H10
> OFN_USEMONIKERS = &H1000000
> End Enum
> '
> Private Type OPENFILENAME
> lStructSize As Long
> hwndOwner As Long
> hInstance As Long
> lpstrFilter As String
> lpstrCustomFilter As String
> nMaxCustFilter As Long
> nFilterIndex As Long
> lpstrFile As String
> nMaxFile As Long
> lpstrFileTitle As String
> nMaxFileTitle As Long
> lpstrInitialDir As String
> lpstrTitle As String
> Flags As Long
> nFileOffset As Integer
> nFileExtension As Integer
> lpstrDefExt As String
> lCustData As Long
> lpfnHook As Long
> lpTemplateName As String
> End Type
> '
> Private Function OpenFileDialog(Optional DialogTitle As String,
> Optional sFilter As String, Optional Flags As OFN_Constants, Optional
> InitialDir As String, Optional hwndOwner As Long, Optional hInstance
> As Long) As String Dim OFName As OPENFILENAME
> '
> OFName.lStructSize = Len(OFName)
> OFName.hwndOwner = hwndOwner
> OFName.hInstance = hInstance
> OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar &
> "*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar &
> "*.bmp" & vbNullChar & vbNullChar ' filtres fichiers
> OFName.lpstrFile = Space$(254)
> OFName.nMaxFile = 255
> OFName.lpstrFileTitle = Space$(254)
> OFName.nMaxFileTitle = 255
> OFName.lpstrInitialDir = InitialDir
> OFName.lpstrTitle = "Sélectionner votre image" ' titre
> OFName.Flags = OFN_READONLY ' [X] lecture seule
> If GetOpenFileName(OFName) Then : OpenFileDialog > > Trim$(OFName.lpstrFile)
> '
> cheficPH = OFName.lpstrFile
> End Function
>
> Sub Command3_Click() 'photo
> Call OpenFileDialog 'APPEL
>
> ''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!!
>
> If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH)
> ChDrive App.Path
> ChDir App.Path
> End Sub
Merci, ça marche, en réponse, petite erreur je pense?
Le problème étant la fermeture de l'appli, ce n'est pas en retour
Unload Me
mais
"Load Me" -- ----------------------------------- Merci, @+, bye, Joe : ---------------------------------------------------------- Avec une hache, celui qui tient le manche a toujours raison. ----------------------------------------------------------
"François Picalausa" a écrit dans le message de news: u$w0JVs$
Bonjour/soir,
Ce code semble être celui de la faq. Il s'agit donc d'une fonction qui retourne une valeur (la variable
cheficPH
est inutile) Il suffit de stocker le résultat de la fonction et si ce résultat est une chaine vide, on sait qu'on a annulé. Note que la procédure à un paramètre permettant de passer des flags.
aussi,
il est inutile de le hardcoder dans la fonction.
Dim strFichier As String strFichier = OpenFileDialog(Paramètres, dont le flag)
If Len(strFichier) Then 'Traitement si fichier Else Unload Me End If
"le_troll" a écrit dans le message de news:OJPsA6r$ > Bonjour, > > Dans l'API GetOpenFileName (ouverture de la boîte de dialogue > donc) > Ça marche si je choisis un fichier pour mettre dans une PictureBoxe, > mais: Si je ferme par la croix [X] rouge, ou <Annuler> ou <Alt+F4>, > ben ça me ferme l'appli, il doit y avoir des params de retour à > rediriger pour éviter ça, mais je ne sais pas lesquels, avez-vous une > idée, voici le code (une tartine cette API): > ------------------------------------------------ > Dim cheficPH As String * 255 > ' > Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias > "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long > ' > Private Enum OFN_Constants > OFN_ALLOWMULTISELECT = &H200 > OFN_CREATEPROMPT = &H2000 > OFN_DONTADDTORECENT = &H2000000 > OFN_ENABLEHOOK = &H20 > OFN_ENABLEINCLUDENOTIFY = &H400000 > OFN_ENABLESIZING = &H800000 > OFN_ENABLETEMPLATE = &H40 > OFN_ENABLETEMPLATEHANDLE = &H80 > OFN_EX_NOPLACESBAR = &H1 > OFN_EXPLORER = &H80000 > OFN_EXTENSIONDIFFERENT = &H400 > OFN_FILEMUSTEXIST = &H1000 > OFN_FORCESHOWHIDDEN = &H10000000 > OFN_HIDEREADONLY = &H4 > OFN_LONGNAMES = &H200000 > OFN_NOCHANGEDIR = &H8 > OFN_NODEREFERENCELINKS = &H100000 > OFN_NOLONGNAMES = &H40000 > OFN_NONETWORKBUTTON = &H20000 > OFN_NOREADONLYRETURN = &H8000 > OFN_NOTESTFILECREATE = &H10000 > OFN_NOVALIDATE = &H100 > OFN_OVERWRITEPROMPT = &H2 > OFN_PATHMUSTEXIST = &H800 > OFN_READONLY = &H1 > OFN_SHAREAWARE = &H4000 > OFN_SHAREFALLTHROUGH = 2 > OFN_SHARENOWARN = 1 > OFN_SHAREWARN = 0 > OFN_SHOWHELP = &H10 > OFN_USEMONIKERS = &H1000000 > End Enum > ' > Private Type OPENFILENAME > lStructSize As Long > hwndOwner As Long > hInstance As Long > lpstrFilter As String > lpstrCustomFilter As String > nMaxCustFilter As Long > nFilterIndex As Long > lpstrFile As String > nMaxFile As Long > lpstrFileTitle As String > nMaxFileTitle As Long > lpstrInitialDir As String > lpstrTitle As String > Flags As Long > nFileOffset As Integer > nFileExtension As Integer > lpstrDefExt As String > lCustData As Long > lpfnHook As Long > lpTemplateName As String > End Type > ' > Private Function OpenFileDialog(Optional DialogTitle As String, > Optional sFilter As String, Optional Flags As OFN_Constants, Optional > InitialDir As String, Optional hwndOwner As Long, Optional hInstance > As Long) As String Dim OFName As OPENFILENAME > ' > OFName.lStructSize = Len(OFName) > OFName.hwndOwner = hwndOwner > OFName.hInstance = hInstance > OFName.lpstrFilter = "Fichiers jpg (*.jpg)" & vbNullChar & > "*.jpg" & vbNullChar & "Fichiers bitmap (*.bmp)" & vbNullChar & > "*.bmp" & vbNullChar & vbNullChar ' filtres fichiers > OFName.lpstrFile = Space$(254) > OFName.nMaxFile = 255 > OFName.lpstrFileTitle = Space$(254) > OFName.nMaxFileTitle = 255 > OFName.lpstrInitialDir = InitialDir > OFName.lpstrTitle = "Sélectionner votre image" ' titre > OFName.Flags = OFN_READONLY ' [X] lecture seule > If GetOpenFileName(OFName) Then : OpenFileDialog > > Trim$(OFName.lpstrFile) > ' > cheficPH = OFName.lpstrFile > End Function > > Sub Command3_Click() 'photo > Call OpenFileDialog 'APPEL > > ''' SI RETOUR ICI SANS CHARGEMENT PHOTO = FERME L'APPLI !!! > > If Len(cheficPH) > 9 Then: Picture1.Picture = LoadPicture(cheficPH) > ChDrive App.Path > ChDir App.Path > End Sub