안녕하세요...
다시질문을 드립니다.
많은 지도 부탁드립니다...
MDI폼에서 KeyDown,KeyPress, Keyup 이벤트가 먹질안는데...왜안되죠....???
이것저것 해보다가 답답해서 질문을 드립니다...
그런데...
SDI폼에서는 잘되거든요....근데...MDI에는 위의 이벤트가 통 먹질않는군요...
정확히 설명을 드리면...
MDI폼에서 Child폼을 띠우지않고...MDI메인폼 그자체에서
KeyDown,KeyPress, Keyup 이벤트를 타지않습니다....
그런데...MDI메인폼안에 버튼을 올려두고 그버튼에 포커스를 위치시키면
KeyDown,KeyPress,Keyup 이벤트가발생합니다...(이상하다)
당연히 KeyPreview는 True인데말이죠...(혹시버그가아닐지..)
제가 아직 부족한것이 많아 잘모르고 떠들어대고 있는지도 모르겠군요..
해결방법을 아시는 고수님에게 감히 부탁드립니다....
정말 왜안되죠..???...제가 아직 부족한것이 많아서 그러니 너그러이 이해하시고...
답해주시면 정말 감사하겠습니다....
델파이를 사랑하는 모든분들이 항상 행복하시고 늘 건강하시길 이땅의 모든
신들에게 기도드립니다....
감사합니다...
고수는 아니구요..^^;;;
말씀을 듣고 해보니, 사실이더군요.
아래코드는 아침에 메세지를 가로채는 편법을 이용해 작성 해본 내용인데,
번거롭겠지만 아래 방법을 이용해 보시는건 어떨런지요.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ChangminKeyInterceptor(var Msg: TMsg; var Handled: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ChangminKeyInterceptor(var Msg: TMsg; var Handled: Boolean);
begin
if (Form1 <> nil) and
(Msg.Message = WM_KEYDOWN) then
begin
if (Msg.wParam = VK_DELETE) then ShowMessage('Delete 키를 눌렸다.');
if (Msg.wParam = VK_RETURN) then ShowMessage('Enter 키를 눌렸다.');
if (Msg.wParam = VK_F9) then showMessage('F9 키를 눌렀다.');
end;
if (Form1 <> nil) and
(Msg.Message = WM_KEYUP) then
begin
if (Msg.wParam = VK_DELETE) then ShowMessage('Delete 키를 뗏다.');
if (Msg.wParam = VK_RETURN) then ShowMessage('Enter 키를 뗏다.');
if (Msg.wParam = VK_F9) then ShowMessage('F9 Key 키를 뗏다.');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := ChangminKeyInterceptor;
end;
end.
그럼~ 즐거운 프로그래밍 하시길~
허일학 wrote:
> 안녕하세요...
> 다시질문을 드립니다.
> 많은 지도 부탁드립니다...
>
> MDI폼에서 KeyDown,KeyPress, Keyup 이벤트가 먹질안는데...왜안되죠....???
> 이것저것 해보다가 답답해서 질문을 드립니다...
> 그런데...
> SDI폼에서는 잘되거든요....근데...MDI에는 위의 이벤트가 통 먹질않는군요...
>
> 정확히 설명을 드리면...
> MDI폼에서 Child폼을 띠우지않고...MDI메인폼 그자체에서
> KeyDown,KeyPress, Keyup 이벤트를 타지않습니다....
> 그런데...MDI메인폼안에 버튼을 올려두고 그버튼에 포커스를 위치시키면
> KeyDown,KeyPress,Keyup 이벤트가발생합니다...(이상하다)
> 당연히 KeyPreview는 True인데말이죠...(혹시버그가아닐지..)
>
> 제가 아직 부족한것이 많아 잘모르고 떠들어대고 있는지도 모르겠군요..
> 해결방법을 아시는 고수님에게 감히 부탁드립니다....
> 정말 왜안되죠..???...제가 아직 부족한것이 많아서 그러니 너그러이 이해하시고...
> 답해주시면 정말 감사하겠습니다....
>
> 델파이를 사랑하는 모든분들이 항상 행복하시고 늘 건강하시길 이땅의 모든
> 신들에게 기도드립니다....
>
> 감사합니다...
>