II. MỘT CHƯƠNG TRÌNH VÍ DỤ
1. Khởi tạo hoạt động kéo-nhả
ởi tạo hoạt động kéo-nhả bằng cách đặt thuộc tính OLEDragMode thành vbManual rồi khởi động quá trình kéo bằng cách cho thực hiện phương thức OLEDrag trong sự kiện MouseDown:
Private Sub rtfText_MouseDown(Button As Integer, Shift As Integer, _ x As Single, y As Single)
' Khởi động hoạt động kéo khi phím phải được bấm If Button = 2 Then rtfText.OLEDrag
End Sub
Khi phương thức OLEDrag được gọi thực thi, sự kiện OLEStartDrag được kích
ạt trên đối tượng nguồn. Sự kiện này có tham số là đối tượng DataObject và tham số AllowedEffects. DataObject là đối tượng chứa dữ liệu chuyển giữa đối
ng nguồn và đối tượng đích. Dữ liệu cũng có thể chứa trong đối tượng này Ch làm làm từ từ Kh ho tượ
bằng phương thức SetData. Tương tự như cách sử dụng Clipboard, dữ liệu chứa có
ở n ng bảng 16.2.
thể hiều dạng khác nhau như tóm tắt tro
Bảng 16.2: Khai báo hằng các loại dữ liệu chứa trong Clipboard
Hằng Giá trị Ý nghĩa
vbCFText 1 Text
vbCFBitmap 2 Bitmap (BMP)
vbCFMetafile 3 Metafile (WMF)
vbCFEMetafile 14 Enhanced metafile (.emf)
vbCFDIB 8 Device independent bitmap (dib or bmp)
vbCFPalette 9 Color palette
vbCFFiles 15 List of files
vbCFRTF -16639 Rich Text Format (RTF)
Ví dụđối với RichTextBox, dữ liệu di chuyển có thểở dạng RTF hoặc Text không có định dạng:
Private Sub rtfText_OLEStartDrag(Data As RichTextLib.DataObject, _ AllowedEffects As Long)
If rtfText.Se
ectMove Or vbDropEffectCopy
Basic kích hoạt biến cố OLEDragOver trên
mọi đố số là
đối tượ ect đã được chuẩn bị bởi đối tượng nguồn. Căn
cứ trên Effect giá trị tương
ứng vớ i sử dụng nhả chuột trên đối tượng.
Giá trị thể có giá trị như cho trong bảng sau:
lLength Then
Data.SetData rtfText.SelRTF, vbCFRTF Data.SetData rtfText.SelText, vbCFText Else
Data.SetData rtfText.TextRTF, vbCFRTF Data.SetData rtfText.Text, vbCFText End If
AllowedEffects = vbDropEff End Sub