名前 題名 ▼ たてぐやさん > ▼ Mr.XRAYさん > > > というわけで(どういわけだ!?),こんな感じでしょうか. > > ListviewだとRtIntRectが使えないので、下記のようにしました。ちょっと > 泥臭いコードですが、これですっきり解決です。 > > procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState; > WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); > var > APos : TPoint; > CPos : TPoint; > RectMemo1 : TRect; > RectMemo2 : 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; > //元のスクロールメッセージは処理しない > Handled := true; > end; > Cpos.x := Listview1.Left; > Cpos.Y := Listview1.Top; > Cpos := ClientToScreen(Cpos); > if (Apos.X >= Cpos.x) and (Apos.X <= Cpos.x + Listview1.Width) > and (Apos.Y >= Cpos.y) and (Apos.Y <= Cpos.y + Listview1.Height) > then begin > //Listviewでは元のメッセージを生かす > Handled := false; > end > else Handled := true; > //Listview上でなくてもスクロールしてしまうから。 > end; > > これはいろいろ応用できそうですね。ありがとうございました。 > > ※困った時には「神様・仏様、その前にMr.XRAY様」です。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link