OVH Cloud OVH Cloud

Glisser Déposer un BMP

8 réponses
Avatar
Armando R.
Bonjour à tous, et meilleurs voeux
je voudrais glisser un fichier BMP dans une "form".
Quelqu'un aurait il un petit exemple que je puisse adapter à mon
application.
Merci d'avance.

8 réponses

Avatar
ng
Coment ca ?
Mettre une image en fond ? (Voir propriété Picture)
Drag and Drop interne a l'appli ?
Drag and Drop d'un fichier depuis l'explorateur windows (OLE drag and drop)
?

Nicolas.
--
http://www.ngsoft-fr.com
"Armando R." a écrit dans le message de news:
3ff74053$0$17108$
Bonjour à tous, et meilleurs voeux
je voudrais glisser un fichier BMP dans une "form".
Quelqu'un aurait il un petit exemple que je puisse adapter à mon
application.
Merci d'avance.





Avatar
Armando R.
C'est ça!... Drag and Drop d'un fichier depuis l'explorateur windows (OLE
drag and drop)

"ng" a écrit dans le message de news:

Coment ca ?
Mettre une image en fond ? (Voir propriété Picture)
Drag and Drop interne a l'appli ?
Drag and Drop d'un fichier depuis l'explorateur windows (OLE drag and


drop)
?

Nicolas.
--
http://www.ngsoft-fr.com
"Armando R." a écrit dans le message de news:
3ff74053$0$17108$
> Bonjour à tous, et meilleurs voeux
> je voudrais glisser un fichier BMP dans une "form".
> Quelqu'un aurait il un petit exemple que je puisse adapter à mon
> application.
> Merci d'avance.
>
>
>




Avatar
Jean-Marc
"Armando R." a écrit dans le message de
news:3ff7dcb5$0$7140$
C'est ça!... Drag and Drop d'un fichier depuis l'explorateur windows (OLE
drag and drop)




Hello Armando,
Il te faut une form (form1), une Image (Image1)et un TextBox (Text1) et
voila :

Toutes les explications sont dans le code en commentaires.

'---------------------------------------------------------------------------
----------
Option Explicit
Private Sub Form_Load()
' initialise le composant image:
' le point important est d'initialiser OLEDropMode à 1
' on peut faire là même chose avec tous les composants
' qui possèdent la propriété OLEDropMode

Image1.OLEDragMode = 0
Image1.OLEDropMode = 1

Text1.Text = ""
End Sub

Private Sub image1_OLEDragDrop(Data As DataObject, Effect As Long, Button As
Integer, Shift As Integer, X As Single, Y As Single)
Dim filePath As String
Dim i As Integer

' le GetFormat ne semble pas marcher comme le dit
' la documentation; il semble qu'on ait toujours
' data.Getformat(15)=TRUE
' pas génant ici
If Data.GetFormat(15) = True Then
' seulement un fichier en même temps
If Data.Files.Count = 1 Then
' on recupere le nom du fichier
filePath = Data.Files(1)
' ici on peut tester que c'est bien un bmp par exemple
If UCase$(Right$(filePath, 3)) = "BMP" Then
Image1.Picture = LoadPicture(filePath)
End If
' mais on affiche le fichier droppé dans tous les cas
Text1.Text = filePath
End If
End If
End Sub

Jean-MArc
Avatar
Armando R.
Salut Jean-Marc
j'ai essayé de modifier ton code pour faire la même chose mais cette fois-ci
sur une Form, mais ça ne marche pas. Je travaille sur une feuille MDI est ce
que ça peut marcher ?

Armando
Avatar
François Picalausa
Bonjour/soir,

"Jean-Marc" a écrit dans le message de
news:3ff7f91e$0$1151$
"Armando R." a écrit dans le message de
' le GetFormat ne semble pas marcher comme le dit
' la documentation; il semble qu'on ait toujours
' data.Getformat(15)=TRUE



Ici (Win XP SP1), aucun problème de ce type...
Le code suivant fonctionne (cliquer glisser d'image à partir d'une autre
picturebox dont OLEdragMode = 1 par exemple):

'Sur une Form contenant un PictureBox, Picture1
Private Sub Form_Load()
Picture1.OLEDropMode = 1
End Sub

Private Sub Picture1_OLEDragDrop(Data As DataObject, Effect As Long, Button
As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim bContinue As Boolean, i As Long

i = 0

'L'utilisateur a envoyé un fichier
If Data.GetFormat(vbCFFiles) Then
If Data.Files.Count > 0 Then
bContinue = True

'On trouve le premier fichier qui peut être chargé
Do While i < Data.Files.Count And bContinue
Picture1.Picture = LoadPicture(Data.Files.Item(i + 1))
bContinue = Not (Err.Number = 0)
i = i + 1
Loop

If bContinue Then MsgBox "Aucun fichier image n'a été trouvé!"
End If
ElseIf Data.GetFormat(vbCFBitmap) Then
Picture1.Picture = Data.GetData(vbCFBitmap)
ElseIf Data.GetFormat(vbCFMetafile) Then
Picture1.Picture = Data.GetData(vbCFMetafile)
ElseIf Data.GetFormat(vbCFEMetafile) Then
Picture1.Picture = Data.GetData(vbCFEMetafile)
ElseIf Data.GetFormat(vbCFDIB) Then
Picture1.Picture = Data.GetData(vbCFDIB)
Else
MsgBox "Format de données inconnu!"
End If
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Armando R.
Bonjour,
Je n'ai pas de PictureBox je travaille directement sur une Form, et c'est ça
mon problème.

Armando
Avatar
François Picalausa
Bonjour/soir,

Tu peux directement réutiliser mon code pour une form:

Private Sub Form_Load()
Me.OLEDropMode = 1
End Sub

Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As
Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim bContinue As Boolean, i As Long

i = 0

'L'utilisateur a envoyé un fichier
If Data.GetFormat(vbCFFiles) Then
If Data.Files.Count > 0 Then
bContinue = True

'On trouve le premier fichier qui peut être chargé
Do While i < Data.Files.Count And bContinue
Me.Picture = LoadPicture(Data.Files.Item(i + 1))
bContinue = Not (Err.Number = 0)
i = i + 1
Loop

If bContinue Then MsgBox "Aucun fichier image n'a été trouvé!"
End If
ElseIf Data.GetFormat(vbCFBitmap) Then
Me.Picture = Data.GetData(vbCFBitmap)
ElseIf Data.GetFormat(vbCFMetafile) Then
Me.Picture = Data.GetData(vbCFMetafile)
ElseIf Data.GetFormat(vbCFEMetafile) Then
Me.Picture = Data.GetData(vbCFEMetafile)
ElseIf Data.GetFormat(vbCFDIB) Then
Me.Picture = Data.GetData(vbCFDIB)
Else
MsgBox "Format de données inconnu!"
End If
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"Armando R." a écrit dans le message de
news:3ff81d94$0$22327$
Bonjour,
Je n'ai pas de PictureBox je travaille directement sur une Form, et c'est


ça
mon problème.

Armando




Avatar
Armando R.
Merci à tous, ça marche à merveille

Armando