Moment ich glaube wir brauchen mal was mehr Code:
Delphi-Quellcode:
TSelection = class(TGraphicControl)
private
//[...]
public
constructor Create(AOwner: TComponent; X,Y:integer);
published
property OnMouseMove;
protected
procedure Paint; override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure WndProc(var Message: TMessage); override;
end;
Tf2DData = class(TForm)
imgData: TImage;
//[...]
procedure imgDataMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private-Deklarationen }
//[...]
procedure SelectionBoxTest;
public
{ Public-Deklarationen }
end;
procedure Tf2DData.SelectionBoxTest;
var test:TSelection;
begin
test:=TSelection.Create(self,100,100);
test.Parent:=PanImage;
end;
So, imgDataMouseMove wird logischerweise nicht mehr aufgerufen, wenn der Mauscursor oberhalb von TSelection ist. Die obigen Codes können das bisher nicht verhindern und wenn ich an ImgData eine WM_MOUSEMOVE Nachricht schicke, bekomme ich einen STACK Overflow, vermutlich weil ImgData die Nachricht dann wieder an TSelection weiterschickt ...
//edit: ich sehe gerade, dass du Recht hast: Ich habe das Panel, auf welchem ImgData liegt, als Parent angegeben und nicht das Image ImgData selbst. Mein Fehler... sorry!! Aber wie löse ich das generelle Problem? Eine Nachricht direkt an ImgData? Aber wie finde ich allgemein heraus, welches Objekt unterhalb meiner TSelectionBox liegt, an die ich die Nachricht schicken muss?