制作一个ActiveFormX控件,里面放置一个TRichEdit控件,然后放置了一个TActionList控件,在TActionList里增加了几个标准的TAction,如TEditCut、TEditCopy、TEditPaste等,放置几个ToolButton按钮,按钮的Action分别设置为以上的Action动作,编译生成的ActiveFormX放在程序执行之后,点击ToolButton按钮之后系统不执行相应的操作,完全不调用相应的操作。调试的时候跟踪发现那几个TAction对象都已建立的,可点击ToolButton按钮就是不执行相应的操作。请问是什么原因啊???注:开发环境是Delphi7
需要处理Application.OnMessage,将消息传给控件就可以了
const
StdKeys = [VK_TAB, VK_RETURN]; { 标准键 }
ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { 扩展键 }
fExtended = 000000; { 扩展键标志 }
begin
Handled := False;
with Msg do
if ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and
((wParam in StdKeys) or (GetKeyState(VK_CONTROL) < 0) or
(wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then
try
if IsChild(wbEditor.Handle, hWnd) then
{ 处理所有的浏览器相关消息 }
begin
with wbEditor.Application as IOleInPlaceActiveObject do
Handled := TranslateAccelerator(Msg) = S_OK;
if not Handled then
begin
Handled := True;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
except
end;
end; // IEMessageHandler procedure TForm1.FormCreate(Sender: TObject);
begin
……
Application.OnMessage := IEMessageHandler;
end;
我只能给你这一段东西..你看看,有没有什么帮助..
也可以发代码到论坛上找高手帮你调试调试的