toon control.name

Status
Niet open voor verdere reacties.

rolfkoehoorn

Nieuwe gebruiker
Lid geworden
8 apr 2008
Berichten
2
Als ik in een Access-formulier op een willekeurig tekstlabel klik dan wil ik de inhoud van dat tekstlabel kopieren naar het klembord.
(Dit wil ik gebruiken om vervolgens een pdf bestand te openen en in dat pdf bestand te zoeken naar de gekopieerde tekst.)
 
accmdcopy

In access kun je het commando accmdcopy gebruiken om informatie naar het klembord te kopieren:
Code:
docmd.runcommand accmdcopy
Beperking is dat dit commando de op dat moment geselecteerde tekst neemt. Als je dus de naam van een label op het klembord wilt hebben, dan zul je een truuk moeten bedenken om dit voor elkaar te krijgen. Bijvoorbeeld door een ongebonden tekstvak op je formulier te zetten en vervolgens in de onclick-event van een label eerst de inhoud van het label kopieren naar het tekstveld, deze tekst selecteren en de focus hierheen verplaatsen en dan het commando accmdcopy uitvoeren.

Als je het iets geavanceerde wilt, zet dan de volgende code in een module:
Code:
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 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 lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) 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
Private Const MAXSIZE = 4096

Public Function NaarKlemBord(tekst As String)
    Dim mem1 As Long, mem2 As Long
    Dim result As Long, X As Long
    mem1 = GlobalAlloc(GHND, Len(tekst) + 1)
    mem2 = GlobalLock(mem1)
    mem2 = lstrcpy(mem2, tekst)
    If GlobalUnlock(mem1) <> 0 Then
        MsgBox "Geheugenprobleem", 16
        GoTo OutOfHere2
    End If
    If OpenClipboard(0&) = 0 Then
        MsgBox "Probleem met het klembord", 16
        Exit Function
    End If
    X = EmptyClipboard()
    result = SetClipboardData(CF_TEXT, mem1)

OutOfHere2:
    If CloseClipboard() = 0 Then
        MsgBox "Probleem met het sluiten van het klembord", 16
    End If
End Function
en roep in je formulier de volgende code aan:
Code:
Private Sub Bijschrift4_Click()
    NaarKlemBord Me!Bijschrift4.Caption
End Sub
Hier is Bijschrift4 de naam van het label.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan