procedure TLinLine.WMLMouseDown(var Message: TMessage); begin FPosX := Message.LParamLo; FposY := Message.LParamHi;if not NearLine(FPosX ,FPosY) then//如果不在直线的周围的指定的区域 begin SendMessage(****.Handle,WM_LBUTTONDOWN,0,0);//向下层控件发送被点击的消息 exit; end; 怎样去确定哪一个image的handle呢?如果直线的矩形框下有多个image 呢?
如果不是窗口控件,该控件是没有接收消息句柄的,如果是窗口控件,作为绘图程序用,如果有上 千上万线条,内存开销太大, 所有你的问题最好是程序检测鼠标(选择时)位置是否是在该控件位置上,来判断是否激活下面的控件。 不知道你的TLine类从什么类继承下来的,如果从TCOMPONENT类继承下来,可以通过 if not (csDesigning in ComponentState) then FHWnd := AllocateHWnd(CommWndProc); 来申请一个消息句柄来使用。
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
(source as TImage).Left:=x;
(source as TImage).Top:=y;
end;
SendMessage(Button2.Handle,WM_LBUTTONUP,0,0);
你想做到什么效果,其实只要给隐藏了的控件发送消息即可!
begin
FPosX := Message.LParamLo;
FposY := Message.LParamHi;if not NearLine(FPosX ,FPosY) then//如果不在直线的周围的指定的区域
begin
SendMessage(****.Handle,WM_LBUTTONDOWN,0,0);//向下层控件发送被点击的消息
exit;
end;
怎样去确定哪一个image的handle呢?如果直线的矩形框下有多个image 呢?
千上万线条,内存开销太大,
所有你的问题最好是程序检测鼠标(选择时)位置是否是在该控件位置上,来判断是否激活下面的控件。
不知道你的TLine类从什么类继承下来的,如果从TCOMPONENT类继承下来,可以通过
if not (csDesigning in ComponentState) then FHWnd := AllocateHWnd(CommWndProc);
来申请一个消息句柄来使用。