Das mit dem MemoWndProc hat bei mir nicht geklappt. Stattdessen verwende ich OnKeyDown.
Bei mir schaut die Funktion so aus:
Delphi-Quellcode:
procedure TF_ReportConfig.Memo_RTF_KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var MyHandle : THandle;
TextPtr : PChar;
RtfEdit : TRichEdit;
Format : DWord;
begin // uses ClipBrd
{$IFNDEF UNICODE}
Format := CF_TEXT;
{$ELSE}
Format := CF_UNICODETEXT;
{$ENDIF}
if (Sender
IS TRichEdit)
AND (ssCtrl
IN Shift)
AND (Key = ORD('
V'))
then
begin
RtfEdit := Sender
AS TRichEdit;
if RtfEdit.PlainText
then
begin
if ClipBoard.HasFormat(Format)
then
begin
ClipBoard.Open;
try
MyHandle := Clipboard.GetAsHandle(Format);
TextPtr := GlobalLock(MyHandle);
RtfEdit.SelText := StrPas(TextPtr);
GlobalUnlock(MyHandle);
Key := 0;
finally
Clipboard.Close;
end;
// finally
end;
end;
end;
end;