unit Fi233P;
..
..
private
..
procedure MouseWheelHandler(var Message:TMessage ); override;
public
end;
var
Fi233F: TFi233F;
implementation
{$R *.dfm}
begin
if not ( Message.msg = WM_MOUSEWHEEL ) then Exit;
if not ( ActiveControl is TDBgrid ) then Exit;
if ( Message.wParam > 0 ) then Keybd_Event( VK_UP, VK_UP, 0,0 );
if ( Message.wParam < 0 ) then Keybd_Event( VK_DOWN,VK_DOWN,0,0 );
end;
위처럼 하면 해당폼의 그리드를마우스휠로 위 아래로 움직일 수 있습니다.
문제는 모든 폼에 다 위 구문을 써 주어야 한다는 겁니다.뭐..복사..붙여넣기 하면 됩니다만..
저걸 메인폼(기타 다른폼..?)에 한번만 기록해 놓고 각 폼에서 적용 받을 수 있나요?
========> 답변 ------------------
Application.OnMessage 에 이벤트 핸들러 걸어서..
거기서 하면 됩니다.
var aControl: TWinControl;
begin
if Msg.message = WM_MouseWheel then begin
aControl := FindControl(Msg.hWnd);
if (aControl is TDBGrid) then begin
if (Msg.wParam > 0) then Keybd_Event(VK_UP, VK_UP, 0,0);
if (Msg.wParam < 0) then Keybd_Event(VK_DOWN,VK_DOWN,0,0);
(aControl as TDBGrid).Invalidate; //그리드에 ▶ 표시를 없앤다..
end;
end;
-- 델마당 ---
댓글 없음:
댓글 쓰기