휠마우스 사용을 하기 위해서 많은 검색을 하여 찾았습니다.
프로시저를 하나 만들어주고 폼이 create될때, application메세지를 주어 하는방법으로 구현하는걸로 해봤습니다. 어떤경우에서인지 모르지만 에러를 아주 가끔 떨어뜨리긴 하더군요.(원인이 뭔지는 모르겠습니다.)
그런데 폼을 repository해서 귀찮은 코딩을 없애고자 하는데요.
소스는 아래와같습니다.
=====================================================================
procedure Tfrm_qmbm001.FormCreate(Sender: TObject);
begin
Application.OnMessage := WheelControl;
end;
procedure Tfrm_qmbm001.WheelControl(var Msg: TMsg; var Handled: Boolean);
begin
try
if Msg.message = WM_Mousewheel then
if (ActiveControl is TDBGrid) or (ActiveControl is TDBLookupComboBox) then begin
if Msg.wParam >0 then begin
Keybd_event(VK_UP, VK_UP, 0,0);
Keybd_event(VK_UP, VK_UP, KEYEVENTF_KEYUP,0);
ActiveControl.Invalidate;
end
else if Msg.wParam < 0 then begin
Keybd_event(VK_DOWN, VK_DOWN, 0,0);
Keybd_event(VK_DOWN, VK_DOWN, KEYEVENTF_KEYUP,0);
ActiveControl.Invalidate;
end;
end;
except
on E:Exception do
ShowMessage(E.Message);
end;
=====================================================================
그런 문제는 폼을 repository하는데, 실질적으로 폼위에 아직 TDBGrid나 TDBLookupComboBox같은것은 없다는거죠. 그럼 코딩을 계속하거나, 아니면 상속을 해서 해야되는데요.
되도록이면 repository로 구현하는 방법이 없을까요?
상속받는다면 간단하게 좀 예를 보여주시면 안될까요? 항상 객체지향은 저에게 책을 볼때는 아하인데, 구현은 정말 단순한거 이상은 안되는거 있죠. 아직은 내공이 모자라서 그런거 같습니다.
좀 도와주세요~~~~
제가 생각한 결론은 uses절에 DBGrids를 추가하면되지 않을까 싶습니다.