用Delphi 模拟自定义菜单
据说程序中的下拉菜单的父窗体是桌面, 按照这个原理可以实现自定义下拉单,下拉菜单中的内容还可以自很多控件。
按下面方法来做,在窗体中放个Panel和一个Button,然后设置Button的事件
Panel的Visible属性设成false;
procedure TForm1.Button1Click(Sender: TObject);
var
pt:TPoint;
begin
GetCursorPos(pt);
Panel1.Visible:=true;
Windows.SetParent(Panel1.Handle,0) ;
Panel1.Left:=pt.X;
Panel1.Top:=pt.Y;
end;
然后再在Panel上放个SpeedButton控件(一定要是这个类型控件),然后设置这个控件的事件
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Windows.SetParent(Panel1.Handle,self.Handle);
Panel1.Visible:=false;
end;
动行程序,看下效果,现在的问题是点击按键后,桌面任务栏上会出现个panel的按键,怎么不让这个按键显示呢,一直没有找到方法,有兴趣的可以一起讨论下。