TCustomControl
多数のポリゴン リスト項目 (不規則な形状) で構成されるDelphi (から継承) でカスタム コントロールを作成しています。アイテムごとにマウス イベントを実装する必要がありますが、まず、マウスの位置が特定のポリゴン内にあるかどうかを検出できる必要があります ( array of TPoint
)。ヒット テスト メッセージ ( WM_NCHITTEST
) をキャッチしています。ここで、この検証を行う必要があります。多数のポリゴンがあり、各ポリゴン アイテムをループして、このチェックを実行して、マウスの X/Y 位置がこのポリゴン内にあるかどうかを確認します。
procedure TMyControl.WMNCHitTest(var Message: TWMNCHitTest);
var
P: TPoint; //X/Y of Mouse
Poly: TPoints; //array of TPoint
X: Integer; //iterator
I: TMyListItem; //my custom list item
begin
P.X:= Message.XPos;
P.Y:= Message.YPos;
for X := 0 to Items.Count - 1 do begin
I:= Items[X]; //acquire my custom list item by index
Poly:= I.Points; //acquire polygon points
//Check if Point (P) is within Polygon (Poly)...?
end;
end;