Domino 9 und frühere Versionen > ND6: Entwicklung

Probleme beim kopieren Feldes in die Zwischenablage

<< < (2/2)

Axel:
Hi,

ich hab gerade festgestellt, dass ich meinen Code doch in einer DB einsetze (es lebe die Dokumentation, vor allem die nicht vorhandene  ;)  >:( ) und die ist mir gerade mit dem gleichen Problem vor die Füsse gefallen.

Ich werde mit in den nächsten Tagen schlau machen und nach einer funktionierenden Lösung Ausschau halten.

Natürlich werde ich sie hier dann zur Verfügung stellen. Also noch ein bisschen Geduld.


Axel

brathaenchen:
hmm und wie rufe ich den Code auf?

Axel:
Hi,


--- Code: ---Const GMEM_MOVEABLE = &H40
Const GMEM_ZEROINIT = &H2
Const CF_TEXT = &H01
Const SRCCOPY = &HCC0020

Declare Function OpenClipboard Lib "user32" Alias "OpenClipboard" (Byval hwnd As Long) As Long
Declare Function CloseClipboard Lib "user32" Alias "CloseClipboard" () As Long
Declare Function EmptyClipboard Lib "user32" Alias "EmptyClipboard" () As Long
Declare Function SetClipboardData Lib "user32" Alias "SetClipboardData" (Byval wFormat As Long, Byval hMem As Long) As Long
Declare Function GlobalAlloc Lib "kernel32" Alias "GlobalAlloc" (Byval wFlags As Long, Byval dwBytes As Long) As Long
Declare Function GlobalLock Lib "kernel32" Alias "GlobalLock" (Byval hMem As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" Alias "GlobalUnlock" (Byval hMem As Long) As Long
Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (Byval lpString1 As Long, Byval lpString2 As String) As Long
Declare Function NEMGetCurrentSubprogramWindow Lib "nnotesws.dll" () As Long


--- Ende Code ---

Diesen Zeilen kopierst du in den Declarations - Abschnitt deines Buttons.


--- Code: ---Sub SetClipboardText(text As String)
Dim hwnd As Long
Dim hGlobalMemory As Long
Dim lpGlobalMemory As Long
Dim ret As Variant
On Error Goto error_handler
hwnd = NEMGetCurrentSubProgramWindow()
If hwnd Then
hGlobalMemory = GlobalAlloc(Clng(GMEM_MOVEABLE Or GMEM_ZEROINIT), Clng(Len(text)+1))
If hGlobalMemory Then
lpGlobalMemory = GlobalLock(hGlobalMemory)
If lpGlobalMemory Then
ret = lstrcpy(lpGlobalMemory, text)
Call GlobalUnlock(hGlobalMemory)
If OpenClipboard(hwnd) Then
ret = EmptyClipboard()
ret = SetClipboardData(CF_TEXT, hGlobalMemory)
ret = CloseClipboard()
End If
Else
Msgbox "Can't allocated global memory pointer.", 32, "Error"
End If
Else
Msgbox "Can't allocated global memory handle.", 32, "Error"
End If
Else
Msgbox "Can't get window handle.", 32, "Error"
End If
Exit Sub
error_handler:
Print "Error: " + Error$(Err)
Resume Next
End Sub

--- Ende Code ---

Dieses Zeilen kopierst du einfach in den Options - Abschnitt. Er fügt dann das automatisch das als Routine ein. Die kannst du dann einfahcin deinem Code aufrufen.

Beisp.:
...
strText = "Das wird in die Zwischenablage kopiert"
Call SetClipboardText(strText)
...


Axel

Axel:

--- Zitat von: TMC am 02.05.05 - 22:41:55 ---Breaking Par hatte da auch mal was.

http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFA00581AB2



--- Ende Zitat ---


Achtung!! Das ist der Code der jetzt Probleme macht. Das hatte ich damals als Vorlage genommen und fast (oder gar 1:1 ) übernommen.


Axel

Axel:
Hi,

ich habe inzwischen eine funktionsfähige Klasse gefunden und hier

Klasse für Zwischenablage

zur Verfügung gestellt.


Axel

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln