Presse-papier et fichier

cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 13 déc. 2005 à 10:40
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 18 déc. 2005 à 00:11
En vb net il est simple de copier le contenu du presse-papier dans un contrôle sous une forme ou une autre, mais le contraire j'ai pas trouvé...

Comment avec du code, mettre un fichier par ex. "c:\monfich.exe" dans le presse-papier, afin que l'on puisse le coller via l'explorateur Windows ultérieurement?

5 réponses

M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
13 déc. 2005 à 12:35
Couper, copier et coller du texte avec l'objet Clipboard


<OBJECT id= alink_1 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></OBJECT>


Deux des méthodes les plus utiles pour l'objet Clipboard sont SetText et GetText. Elles vous permettent de transférer une chaîne de données de et vers l'objet Clipboard, comme le montre la figure 12.2.


Figure 12.2 Transfert de données de et vers l'objet Clipboard à l'aide de SetText et GetText




SetText s'utilise comme une instruction et copie le texte dans l'objet Clipboard en remplacement de ce qui s'y trouvait précédemment. Sa syntaxe est la suivante :


Clipboard.SetText data [, format]


La méthode GetText s'utilise comme une fonction et renvoie le texte stocké dans l'objet Clipboard :


destination = Clipboard.GetText()


La combinaison des méthodes SetText et GetText avec les propriétés décrites dans la section « Utilisation de texte sélectionné » permet, pour un contrôle TextBox, de disposer facilement de commandes Copier, Couper et Coller. Les procédures d'événement suivantes implémentent ces trois commandes pour des contrôles nommés mnuCopy, mnuCut et mnuPaste :

Private Sub mnuCopy_Click ()
   Clipboard.Clear
   Clipboard.SetText Text1.SelText
End Sub

Private Sub mnuCut_Click ()
   Clipboard.Clear
   Clipboard.SetText Text1.SelText
   Text1.SelText =  ""
End Sub

Private Sub mnuPaste_Click ()
   Text1.SelText = Clipboard.GetText()
End Sub



Note L'exemple est plus significatif s'il s'agit de contrôles Menu, car les menus peuvent être utilisés alors que Text1 a le focus.


Notez que les procédures Copy et Cut commencent toutes les deux par vider l'objet Clipboard à l'aide de la méthode Clear. (L'objet Clipboard n'est pas effacé automatiquement car il est possible d'y placer des données dans plusieurs formats différents, comme décrit à la section « Utilisation de formats multiples dans l'objet Clipboard » plus loin dans ce chapitre). Les procédures Copy et Cut copient ensuite le texte sélectionné dans Text1 vers l'objet Clipboard, à l'aide de l'instruction suivante :

Clipboard.SetText Text1.SelText



Dans la commande Coller, la méthode GetText renvoie la chaîne qui se trouve dans l'objet Clipboard. Une instruction d'allocation copie ensuite cette chaîne dans la portion sélectionnée du contrôle TextBox (
Text1.SelText
). En l'absence de sélection, Visual Basic place le texte au point d'insertion dans le contrôle TextBox :

Text1.SelText  = Clipboard.GetText()



Ce code décrit un transfert de texte de et vers le contrôle TextBox Text1, mais l'utilisateur peut effectuer des opérations copier, couper et coller entre Text1 et des contrôles sur d'autres feuilles.


L'objet Clipboard étant commun à tout l'environnement, l'utilisateur peut également transférer du texte entre Text1 et toute application qui utilise le Presse-papiers.


Utilisation de la propriété ActiveControl

Si vous voulez que les commandes Copier, Couper et Coller fonctionnent avec n'importe quel contrôle TextBox qui a le focus, utilisez la propriété ActiveControl de l'objet Screen. Le code ci-dessous fournit une référence à tout contrôle ayant le focus :

Screen.ActiveControl



Ce fragment de code peut être utilisé comme toute autre référence à un contrôle. Si vous savez que le contrôle est un TextBox, vous pouvez faire référence à n'importe laquelle des propriétés disponibles pour les contrôles PictureBox, y compris Text, SelText et SelLength. Le code ci-dessous utilise la propriété SelText sur le contrôle TextBox actif :

Private Sub mnuCopy_Click ()
   Clipboard.Clear
   Clipboard.SetText Screen.ActiveControl.SelText
End Sub

Private Sub mnuCut_Click ()
   Clipboard.Clear
   Clipboard.SetText Screen.ActiveControl.SelText
   Screen.ActiveControl.SelText = ""
End Sub

Private Sub mnuPaste_Click ()
   Screen.ActiveControl.SelText = Clipboard.GetText()
End Sub
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
13 déc. 2005 à 12:37
Utilisation de formats multiples dans l'objet Clipboard


<OBJECT id=alink_1 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></OBJECT>


Vous pouvez en réalité placer plusieurs blocs de données en même temps dans l'objet Clipboard, si chacun des blocs est dans un format différent. Cela est utile car vous ne savez pas dans quelle application les données seront collées, et le fait de fournir les données dans plusieurs formats différents augmente les chances qu'elles soient dans le format utilisable par l'autre application. Les autres méthodes de l'objet Clipboard (GetData, SetData et GetFormat ) permettent de gérer des formats de données autres que texte, en fournissant un nombre qui spécifie le format. Le tableau ci-dessous donne la description de ces formats avec le nombre correspondant.


Constante,
Description,
----

VbCFLink,
Liaison échange dynamique de données.,
----

VbCFText,
Texte. Les exemples précédents du chapitre utilisent tous ce format.,
----

VbCFBitmap,
Image bitmap.,
----

VbCFMetafile,
Métafichier.,
----

VbCFDIB,
Image bitmap indépendante du périphérique.,
----

VbCFPalette,
Palette de couleurs.


Les quatre derniers formats de la liste peuvent être utilisés pour des opérations copier-coller de données à partir de contrôles PictureBox. Le code ci-dessous crée des commandes générales Couper, Copier et Coller utilisables avec tous les contrôles standard.

Private Sub mnuCopy_Click ()
   Clipboard.Clear
   If TypeOf Screen.ActiveControl Is TextBox Then
      Clipboard.SetText Screen.ActiveControl.SelText
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Clipboard.SetText Screen.ActiveControl.Text
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Clipboard.SetData Screen.ActiveControl.Picture
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Clipboard.SetText Screen.ActiveControl.Text
   Else
      ' Aucune action pour les autres contr&#244;les.
   End If
End Sub

Private Sub mnuCut_Click ()
   ' R&#233;alise d'abord une copie.
   mnuCopy_Click
   ' Efface le contenu du contr&#244;le actif.
   If TypeOf Screen.ActiveControl Is TextBox Then
      Screen.ActiveControl.SelText = ""
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Screen.ActiveControl.Text = ""
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Screen.ActiveControl.Picture = LoadPicture()
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Screen.ActiveControl.RemoveItem Screen.ActiveControl.ListIndex
   Else
      ' Aucune action possible pour les autres contr&#244;les.
   End If
End Sub

Private Sub mnuPaste_Click ()
   If TypeOf Screen.ActiveControl Is TextBox Then
      Screen.ActiveControl.SelText = Clipboard.GetText()
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Screen.ActiveControl.Text = Clipboard.GetText()
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Screen.ActiveControl.Picture = _
         Clipboard.GetData()
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Screen.ActiveControl.AddItem Clipboard.GetText()
   Else
      ' Aucune action possible pour les autres contr&#244;les.
   End If
End Sub
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
13 déc. 2005 à 12:38
Vérification du format des données dans l'objet Clipboard


<OBJECT id=alink_1 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></OBJECT>


La méthode GetFormat peut être utilisée pour déterminer le format des données qui se trouvent dans l'objet Clipboard. Vous pouvez, par exemple, désactiver la commande Coller selon que les données de l'objet Clipboard sont ou non compatibles avec le contrôle actif.

Private Sub mnuEdit_Click ()
' &#201;v&#233;nement Click pour le menu Edition.
   mnuCut.Enabled = True
   mnuCopy.Enabled = True
   mnuPaste.Enabled = False
   If TypeOf Screen.ActiveControl Is TextBox Then
      If Clipboard.GetFormat(vbCFText) Then mnuPaste.Enabled = True
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      If Clipboard.GetFormat(vbCFText) Then mnuPaste.Enabled = True
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      If Clipboard.GetFormat(vbCFText) Then mnuPaste.Enabled = True
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      If Clipboard.GetFormat(vbCFBitmap) Then mnuPaste.Enabled = True
   Else
      ' Impossible de couper ou copier &#224; partir des 
      ' autres types de contr&#244;les.
      mnuCut.Enabled = False
      mnuCopy.Enabled = False
   End If
End Sub



Note Vous pouvez également vérifier les autres formats de données à l'aide des constantes vbCFPalette, vbCFDIB et vbCFMetafile. Si vous voulez remplacer la palette d'une image à l'aide des opérations de l'objet Clipboard, appelez vbCFBitmap plutôt que vbCFDIB. Pour plus d'informations sur le mode d'utilisation de la palette, reportez-vous à la section « Utilisation de 256 couleurs » plus loin dans ce chapitre.


Pour plus d'informations reportez-vous à la section « Clipboard, objet » du Manuel de référence du langage.
0
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
13 déc. 2005 à 22:49
Merci beaucoup pour le cours sur le clipboard pour du texte et des images...

Mais, je voudrais créer un objet qui représente un fichier, et le mettre dans le presse papier, pour pouvoir par ex. faire un coller sur le bureau après.

Dim fich as fileinfo = new fileinfo("c:\monfichier.exe")
Clipboard.SetDataObject(fich)

ne fonctionne pas

avec File non plus, c'est là que je n'ai pas de solution
0

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

Posez votre question
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
18 déc. 2005 à 00:11
C'est bon j'ai trouvé...

Dim DataObject
As
New DataObject



Dim filex()
As
String


filex(0) = [le chemin de fichier sous fomre de string]

DataObject.SetData(DataFormats.FileDrop, filex)


Clipboard.SetDataObject(DataObject,
True)
0
Rejoignez-nous