2010/12/23 (木) 18:10:47 Mr.XRAY |
▼ たてぐやさん
というわけで(どういわけだ!?),こんな感じでしょうか.
スクロールメッセージ関係は,Halbow資料館の以下にあります.
http://mrxray.on.coocan.jp/Halbow/VCL03.html
//=============================================================================
// マウスカーソルがあるコントロール上でのみスクロールさせるテスト
// ここでは,対象コントロールであるMemoがあるForm1のOnMouseWheelイベントで処理
//
// Form上にMemo1とMemo2がある場合
// スクロールメッセージの詳しい内容は以下を参照
// http://mrxray.on.coocan.jp/Halbow/VCL03.html
//=============================================================================
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
APos : TPoint;
RectMemo1 : TRect;
RectMemo2 : TRect;
begin
GetCursorPos(APos);
GetWindowRect(Memo1.Handle, RectMemo1);
GetWindowRect(Memo2.Handle, RectMemo2);
if PtInRect(RectMemo1, APos) then begin
if WheelDelta > 0 then begin
Memo1.Perform(EM_SCROLL,SB_LINEDOWN,0);
end else begin
Memo1.Perform(EM_SCROLL,SB_LINEUP,0);
end;
end;
if PtInRect(RectMemo2, APos) then begin
if WheelDelta > 0 then begin
Memo2.Perform(EM_SCROLL,SB_LINEDOWN,0);
end else begin
Memo2.Perform(EM_SCROLL,SB_LINEUP,0);
end;
end;
//元のスクロールメッセージは処理しない
Handled := True;
end;
|
|