Application의 OnMessage에 달아서 쓸려고 합니다..
마우스가 콤포넌트를 떠났을때를 처리 하려니...
모르겠네여...
좀 도와 주세여...
(참고로 wndProc는 쓰지 않으려고 합니다..)
모든 동일 콤포넌트(다른 폼에도 있음)에 쓰려고 해서요...
procedure TfrmMain.OnAppMessage(var Msg: TMsg; var Handled: Boolean);
var
W: TWinControl;
begin
if (Msg.message = WM_MOUSEMOVE) then
begin
W := FindVCLWindow(Mouse.CursorPos);
if W <> nil then
begin
if (W is TDBGrid) then
begin
if (W as TDBGrid).Tag = 0 then
begin
(W as TDBGrid).Height := (W as TDBGrid).Height + 10;
(W as TDBGrid).Tag := 1;
end; //end if (W as TPanel).Tag = 1 then
end
else
begin
//?????????????????????????????
end; //end if (W is TPanel) then
end; //end if W <> nil then
end; // end if (Msg.message = WM_MOUSEMOVE) then
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
//
Application.OnMessage := OnAppMessage;
end;
CM_MOUSEENTER 와 CM_MOUSELEAVE 메세지를 받아서 처리하시면 훨씬 시스템에 부담을 덜 주게 되죠.. MouseMove보다 말이죠.
진정한초보 wrote:
> Application의 OnMessage에 달아서 쓸려고 합니다..
> 마우스가 콤포넌트를 떠났을때를 처리 하려니...
> 모르겠네여...
> 좀 도와 주세여...
> (참고로 wndProc는 쓰지 않으려고 합니다..)
> 모든 동일 콤포넌트(다른 폼에도 있음)에 쓰려고 해서요...
>
> procedure TfrmMain.OnAppMessage(var Msg: TMsg; var Handled: Boolean);
> var
> W: TWinControl;
> begin
> if (Msg.message = WM_MOUSEMOVE) then
> begin
> W := FindVCLWindow(Mouse.CursorPos);
>
> if W <> nil then
> begin
> if (W is TDBGrid) then
> begin
> if (W as TDBGrid).Tag = 0 then
> begin
> (W as TDBGrid).Height := (W as TDBGrid).Height + 10;
> (W as TDBGrid).Tag := 1;
> end; //end if (W as TPanel).Tag = 1 then
> end
> else
> begin
> //?????????????????????????????
> end; //end if (W is TPanel) then
> end; //end if W <> nil then
> end; // end if (Msg.message = WM_MOUSEMOVE) then
> end;
>
> procedure TfrmMain.FormCreate(Sender: TObject);
> begin
> //
> Application.OnMessage := OnAppMessage;
> end;