|
|
|
|
|
Ärgern Sie sich auch immer darüber, dass Anwendungen ohne Ihr
Zutun den Inhalt der Zwischenablage ändern oder überschreiben?
Beste Beispiele, nein - halt, bestens abschreckende Beispiele sind
Add-Ins für die VB-Entwicklungsumgebung oder
Microsoft-Office-Anwendungen: Sie kopieren beispielsweise ein
Code-Stück in die Zwischenablage, starten die VB-IDE mit Add-Ins -
und der kopierte Inhalt ist weg...
Es gibt leider keinen anderen Weg für diese Add-Ins, ein Symbol
in einen Button der CommandBars zu bugsieren, als über die
Zwischenablage. Damit sich die Anwender nicht genauso über Ihre
Anwendungen - und noch weniger über die Add-Ins aus Ihrer Feder -
ärgern müssen, sollten Sie wenigstens minimale Vorsorge treffen
und den angetroffenen Inhalt der Zwischenablage sichern, bevor Sie
ihn kurzzeitig mit eigenem Inhalt überschreiben, und anschließend
wieder herstellen.
Leider bietet Visual Basic nur den Zugriff auf die wichtigsten
Zwischenablage-Formate an, von anwendungsspezifischen Formaten ganz
zu schweigen. Aber zeigen Sie doch bitte guten Willen und sichern
Sie eben die Inhalte der möglichen Formate.
Die Funktion ClipbdStore sichert den Inhalt der Zwischenablage in
der öffentlichen Variable ClipboardStore des Moduls
modClipboardStore als kleines Array aus dem jeweiligen Inhalt und
der Format-Konstante (vbCF...), wenn das Format erkannt
wurde. Sie gibt den Wert True zurück, wenn das Format nicht erkannt
worden ist oder die Zwischenablage leer ist. Dann können Sie
entscheiden, ob Sie auf die Verwendung der Zwischenablage
verzichten. Oder Sie fragen den Anwender, ob der Inhalt
überschrieben werden kann und bieten ihm damit Gelegenheit, den
Inhalt gegebenenfalls anderweitig zu sichern.
Ansonsten können Sie mit Clipboard.Clear den Inhalt löschen und
die Zwischenablage für Ihre Anwendung verwenden. Anschließend
sollten Sie natürlich den gesicherten Inhalt wieder in die
Zwischenablage zurückschreiben. Dies erledigt die Hilfs-Prozedur
ClipbdRestore für Sie.
Public ClipboardStore As Variant
Public Sub ClipbdClear()
ClipboardStore = vbEmpty
End Sub
Public Function ClipbdStore() As Boolean
With Clipboard
Select Case True
Case .GetFormat(vbCFBitmap)
ClipboardStore = Array(.GetData(vbCFBitmap), _
vbCFBitmap)
Case .GetFormat(vbCFDIB)
ClipboardStore = Array(.GetData(vbCFDIB), _
vbCFDIB)
Case .GetFormat(vbCFEMetafile)
ClipboardStore = Array(.GetData(vbCFEMetafile), _
vbCFEMetafile)
Case .GetFormat(vbCFMetafile)
ClipboardStore = Array(.GetData(vbCFMetafile), _
vbCFMetafile)
Case .GetFormat(vbCFPalette)
ClipboardStore = Array(.GetData(vbCFPalette), _
vbCFPalette)
Case .GetFormat(vbCFRTF)
ClipboardStore = Array(.GetText(vbCFRTF), _
vbCFRTF)
Case .GetFormat(vbCFText)
ClipboardStore = Array(.GetText(vbCFText), _
vbCFText)
Case Else
ClipbdStore = True
End Select
End With
End Function
Public Sub ClipbdRestore()
Select Case ClipboardStore(1)
Case vbCFBitmap, vbCFDIB, vbCFEMetafile, vbCFFiles, _
vbCFLink, vbCFMetafile, vbCFPalette
Clipboard.SetData ClipboardStore(0), ClipboardStore(1)
Case vbCFRTF, vbCFText
Clipboard.SetText ClipboardStore(0), ClipboardStore(1)
End Select
End Sub
Unter Zwischenablage
zwischenstapeln finden Sie eine Erweiterung dieser Sicherung als
Klasse, die beliebig viele Inhalte sichern und wieder herstellen
kann.
|
|
|