Clipboard剪貼簿物件之應用
Clipboard是VB提供給程式控制剪貼簿的物件,如果想在VB中複製資料到剪貼簿,或是從剪貼簿中取得資料貼到程式中,就必須使用到Clipboard。使用Clipboard,無須再額外引入物件,它是VB程式內的共用物件,表單上無須有Clipboard,就能直接使用Clipboard,是個很方便的東西!
什麼是「剪貼簿」?
在介紹Clipboard以前,先來說說剪貼簿的工作概念吧!剪貼簿是Windows所提供的資料交換中心,任何程式都可以複製資料(文字、圖片等格式)到剪貼簿中,也可以從剪貼簿中抓取資料貼在自己的視窗中。如圖:
不過使用剪貼簿時,不要把剪貼簿當作能依賴的資料儲存所,因為當某程式的資料複製進來時,會把剪貼簿原有的資料覆蓋掉。因此,想從剪貼簿取得資料的一方,應該在提供資料的一方把資料複製到剪貼簿之後,就立刻取下資料。
Clipboard提供的方法
Clipboard.GetFormat '檢查剪貼簿之中是否含有文字或圖片資料 Clipboard.GetText '取得剪貼簿之中的文字資料 Clipboard.SetText '複製文字資料到剪貼簿之中 Clipboard.GetData '取得剪貼簿之中的圖片資料 Clipboard.SetData '複製圖片資料到剪貼簿之中 Clipboard.Clear '清除剪貼簿的內容 |
GetFormat
由於剪貼簿可以容納多種不同格式的資料,因此使用其中的資料前,必須先檢查剪貼簿中是否含有我們所要的資料,這時就必須使用GetFormat,傳回真假布林值,如果剪貼簿中含有我們所要的資料格式,則傳回True,反之傳回False。其格式如下:
變數 = Clipboard.GetFormat(資料格式)
資料格式
其中「資料格式」又可以是以下設定值:
vbCFText(1):文字格式
vbCFRTF(-16639):Rich Text Format 文字格式
vbCFBitmap(2):點陣圖格式
vbCFDIB(8):與設備無關的點陣圖格式
vbCFPalette(9):調色盤格式
vbCFMetafile(3):Metafile 格式
vbCFEMetafile(14):強化型Metafile 格式
舉例(判斷圖片格式)
舉個小例子:判斷剪貼簿中的資料是否為圖片格式。
1 2 3 4 5 6 7 |
Sub CheckPicture() '判斷圖片格式 If Clipboard.GetFormat(vbCFBitmap) Then '判斷Clipboard.GetFormat(vbCFBitmap)的傳回值(True或是False)。在此無透過變數儲存傳回值,直接用If判斷。 MsgBox "是點陣圖格式!" Else MsgBox "不是點陣圖格式!" End If End Sub |
GetText
想要讀取剪貼簿中的文字格式資料,就要使用GetText。格式如下:
儲存文字的字串變數 = Clipboard.GetText(vbCFText)
以上灰色部分的「(vbCFText)」可省略。
舉例(輸出剪貼簿中的文字資料)
1 2 3 4 5 |
Sub OutPutGetText() '輸出剪貼簿中的文字資料 Dim X As String 'X用來儲存剪貼簿的文字資料 X = Clipboard.GetText '使X儲存Clipboard.GetText的文字資料 MsgBox X '用Msgbox顯示X變數中的資料 End Sub |
SetText
想要將文字複製到剪貼簿之內,就要使用SetText。格式如下:
Clipboard.SetText 文字內容, vbCFText
上面灰色部分的「, vbCFText」可以省略。
舉例(將Text1中的Text資料複製到剪貼簿裡)
1 2 3 |
Sub CopyText1() '將Text1中的Text資料複製到剪貼簿裡 Clipboard.SetText Text1.Text '很簡單,就這麼一行,就能將Text1.Text的資料複製到剪貼簿裡 End Sub |
GetData
想要讀取剪貼簿中的圖片格式資料,就要使用GetData。格式如下:
貼上圖片的物件 = Clipboard.GetData
舉例(將剪貼簿的圖片貼成Form的背景圖)
1 2 3 |
Sub GetDataSetFormPicture() '將剪貼簿的圖片貼成Form的背景圖 Form1.Picture = Clipboard.GetData '一樣很簡單,就這麼一行,就能將表單的背景變成剪貼簿中的圖片。 End Sub |
SetData
想要將圖片複製到剪貼簿之內,就要使用SetData。格式如下:
Clipboard.SetText 圖片物件
舉例(將Picture的圖片複製到剪貼簿中)
1 2 3 |
Sub CopyPicture1() '將Picture的圖片複製到剪貼簿中 Clipboard.SetData Picture1.Picture '直接將Picture1的圖片複製到剪貼簿裡 End Sub |
Clear
如果想要清空剪貼簿儲存的資料,就要使用Clear,用法如下:
1 2 3 |
Sub CleanClipboard() '清除剪貼簿資料 Clipboard.Clear '直接清除剪貼簿裡的所有資料 End Sub |
Clipboard真是VB十分好用的物件,妥善運用可以使該程式看起來更為聰明!