类似弹出菜单,这个控件在鼠标点击其它地方时消失,如何实现? ( 积分: 200 )

  • 主题发起人 主题发起人 jopi
  • 开始时间 开始时间
自己写个无边框的控件,然后自己写鼠标进入离开按下的函数
 
点的地方...mousedown写下....self.对象.valsable:=false;
 
查这两个API的用法和帮助:
SetCapture/ReleaseCapture.
 
1. 得到你的空间的句柄 --> MYCHWnd
2. 建立鼠标钩子!
单鼠标点时,得到WindowFromPoint 句柄 TmHWnd,如果
TmHWnd<>MYCHWnd 那么你的空间隐蔽即可!
 
同意SFG的方法,比较简单
其他的方法没试过
 
看了很多贴子,如
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3138449
弹出窗口出来了,但问题是主窗口不活动了。
 
Form2为弹出窗体

procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if WindowFromPoint(ClientToScreen(Point(X, Y))) <> Handle then
begin
ReleaseCapture;
Hide;
end;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
SetCapture(Handle);
end;

procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SetCapture(Handle);
end;
 
我想要的是一个类似ComboBox的东东,但弹出的东西可以定制。这个定制的东西不接受焦点(主窗口始终保持活动),但上面的控件能正常响应鼠标操作。
如能解决可再加分!
 
用第三方的组件吧
自己写老是有这样那样的问题
 

Similar threads

后退
顶部