放一个ActionList元件,打开编辑窗口,右键菜单选择New Standard ...,添加EditCut,EditCopy,EditPaste等,在你的弹出菜单加3个菜单项,Action属性分别选择就Ok.
我看楼主还是用ActionList吧.这样连代码都不用写
private procedure ClipboardChangeCBChain(var message: TMessage);message WM_CHANGECBCHAIN; procedure ClipboardChanged(var message: TMessage);message WM_DRAWCLIPBOARD; var hwndNextViewer:hWnd; procedure TFrmEdtChda.FormCreate(Sender: TObject); begin hwndNextViewer := SetClipboardViewer(handle); end;procedure TFrmEdtChda.ClipboardChanged(var message: TMessage); begin if Clipboard.HasFormat(CF_TEXT) then S := Clipboard.astext; if (hwndNextViewer <> NULL) then with message do SendMessage(hwndNextViewer, Msg,wParam, lParam); end;procedure TFrmEdtChda.ClipboardChangeCBChain(var message: TMessage); begin with message do begin if WParam=hwndNextViewer then hwndNextViewer := LParam else if (hwndNextViewer <> NULL) then SendMessage(hwndNextViewer, Msg,wParam, lParam); end; end;
procedure TFrmEdtChda.FormClose(Sender: TObject; var Action: TCloseAction); begin ChangeClipboardChain(handle, hwndNextViewer); SendMessage(hwndNextViewer,WM_CHANGECBCHAIN,Handle,hwndNextViewer); end;
将你自己的功能,加到系统菜单去就可
procedure ClipboardChangeCBChain(var message: TMessage);message WM_CHANGECBCHAIN;
procedure ClipboardChanged(var message: TMessage);message WM_DRAWCLIPBOARD;
var
hwndNextViewer:hWnd;
procedure TFrmEdtChda.FormCreate(Sender: TObject);
begin
hwndNextViewer := SetClipboardViewer(handle);
end;procedure TFrmEdtChda.ClipboardChanged(var message: TMessage);
begin
if Clipboard.HasFormat(CF_TEXT) then S := Clipboard.astext;
if (hwndNextViewer <> NULL) then with message do SendMessage(hwndNextViewer, Msg,wParam, lParam);
end;procedure TFrmEdtChda.ClipboardChangeCBChain(var message: TMessage);
begin
with message do
begin
if WParam=hwndNextViewer then hwndNextViewer := LParam
else if (hwndNextViewer <> NULL) then SendMessage(hwndNextViewer, Msg,wParam, lParam);
end;
end;
begin
ChangeClipboardChain(handle, hwndNextViewer);
SendMessage(hwndNextViewer,WM_CHANGECBCHAIN,Handle,hwndNextViewer);
end;