▼ Mr.XRAYさん
> PtInRectは確か,TWinControlで使用可能なハズなのですが.
> スクロールメッセージは,EM_XXXXはTMemo関係なので,これとは別に
> 一般的なメッセージを使って,こんな感じでいくと思うのですが....
> 後でテストしてみます.
procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
APos : TPoint;
CPos : TPoint;
RectMemo1 : TRect;
RectMemo2 : TRect;
Rectlistview1 : TRect;
Rectlistview2 : TRect;
begin
GetCursorPos(APos);
GetWindowRect(Memo1.Handle, RectMemo1);
GetWindowRect(Listview1.Handle, RectMemo2);
if PtInRect(RectMemo1, APos) then begin
if WheelDelta > 0 then begin
Memo1.Perform(EM_SCROLL,SB_LINEUP,0);
end else begin
Memo1.Perform(EM_SCROLL,SB_LINEDOWN,0);
end;
end;
GetWindowRect(ListView1.Handle, RectListView1);
if PtInRect(RectListView1, APos) then begin
if WheelDelta > 0 then begin
ListView1.Perform(WM_VSCROLL, SB_LINEUP,0);
end else begin
ListView1.Perform(WM_VSCROLL, SB_LINEDOWN,0);
end;
end;
GetWindowRect(ListView2.Handle, RectListView2);
if PtInRect(RectListView2, APos) then begin
if WheelDelta > 0 then begin
ListView2.Perform(WM_VSCROLL, SB_LINEUP,0);
end else begin
ListView2.Perform(WM_VSCROLL, SB_LINEDOWN,0);
end;
end;
Handled := true;
end;
これで思い通りの動作をさせることができました。
ありがとうございました。
|