Hi Daniel
The code below contains functions to read from and write to the clipboard.
Create a new module, copy the code and paste it into the module, then save
it as mdlClipboard or some such.
Then use the ClipBoard_GetText function in the DblClick event procedure for
your textbox:
Private Sub MyTextBox_DblClick( Cancel as integer)
MyTextBox = ClipBoard_GetText
End Sub
--
Good Luck
Graham Mandeno [Access MVP]
Auckland, New Zealand
============== start code ==============
Option Explicit
Private Declare Function GlobalUnlock _
Lib "kernel32" ( _
ByVal hMem As Long _
) As Long
Private Declare Function GlobalLock _
Lib "kernel32" ( _
ByVal hMem As Long _
) As Long
Private Declare Function GlobalAlloc _
Lib "kernel32" ( _
ByVal wFlags As Long, _
ByVal dwBytes As Long _
) As Long
Private Declare Function GlobalSize _
Lib "kernel32" ( _
ByVal hMem As Long _
) As Long
Private Declare Function lstrcpy _
Lib "kernel32" ( _
ByVal lpString1 As Any, _
ByVal lpString2 As Any _
) As Long
Private Declare Function CloseClipboard _
Lib "user32" ( _
) As Long
Private Declare Function OpenClipboard _
Lib "user32" ( _
ByVal hWnd As Long _
) As Long
Private Declare Function EmptyClipboard _
Lib "user32" ( _
) As Long
Private Declare Function GetClipboardData _
Lib "user32" ( _
ByVal wFormat As Long _
) As Long
Private Declare Function SetClipboardData _
Lib "user32" ( _
ByVal wFormat As Long, _
ByVal hMem As Long _
) As Long
Private Const GHND = &H42
Private Const CF_TEXT = 1
Public Function ClipBoard_SetText(strCopyString As String) As Boolean
Dim hGlobalMemory As Long
Dim lpGlobalMemory As Long
Dim hClipMemory As Long
' Allocate moveable global memory.
hGlobalMemory = GlobalAlloc(GHND, Len(strCopyString) + 1)
' Lock the block to get a far pointer to this memory.
lpGlobalMemory = GlobalLock(hGlobalMemory)
' Copy the string to this global memory.
lpGlobalMemory = lstrcpy(lpGlobalMemory, strCopyString)
' Unlock the memory and then copy to the clipboard
If GlobalUnlock(hGlobalMemory) = 0 Then
If OpenClipboard(0&) <> 0 Then
Call EmptyClipboard
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
ClipBoard_SetText = CBool(CloseClipboard)
End If
End If
End Function
Public Function ClipBoard_GetText() As String
Dim hClipMemory As Long
Dim lpClipMemory As Long
Dim strCBText As String
Dim lngSize As Long
If OpenClipboard(0&) <> 0 Then
' Obtain the handle to the global memory
' block that is referencing the text.
hClipMemory = GetClipboardData(CF_TEXT)
If hClipMemory <> 0 Then
' Lock Clipboard memory so we can reference
' the actual data string.
lpClipMemory = GlobalLock(hClipMemory)
If lpClipMemory <> 0 Then
lngSize = GlobalSize(lpClipMemory)
strCBText = Space$(lngSize)
Call lstrcpy(strCBText, lpClipMemory)
Call GlobalUnlock(hClipMemory)
' Peel off the null terminating character.
strCBText = Left(strCBText, InStr(strCBText, vbNullChar) - 1)
End If
End If
Call CloseClipboard
End If
ClipBoard_GetText = strCBText
End Function
Public Function Clipboard_CopyOLE(obj As Object)
Dim hGlobalMemory As Long, lpGlobalMemory As Long
Dim hClipMemory As Long
' Allocate moveable global memory.
hGlobalMemory = GlobalAlloc(GHND, Len(obj) + 1)
' Lock the block to get a far pointer to this memory.
lpGlobalMemory = GlobalLock(hGlobalMemory)
'Need to copy the object to the memory here
lpGlobalMemory = lstrcpy(lpGlobalMemory, obj)
' Unlock the memory and then copy to the clipboard
If GlobalUnlock(hGlobalMemory) = 0 Then
If OpenClipboard(0&) <> 0 Then
Call EmptyClipboard
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
Clipboard_CopyOLE = CBool(CloseClipboard)
End If
End If
End Function
============= end code ================