用Delphi实现弹出菜单

软件世界

  大家都知道,使用Delphi的TPopupMenu构件可以制作弹出式菜单。但是我们如何才能制作出类似Photoshop中各种样式的弹出式菜单呢(比如,Photoshop的笔刷形状选择菜单,见图)?

  制作方法如下:

  1.打开Delphi, 在Form1中放置一个TButton构件。

  2.新建一个窗体,使用默认名字Form2。

  3.将Form2的BorderStyle属性设置为bsNone,这样将会去掉窗体的标题栏和边框。

  4.在Form2中加入TPanel构件Panel1,将Panel1的BevelInner和BevelOuter属性设置为bvRaised,将Align属性设置为alClient。用Panel1的边框来作为菜单窗体的边框。

  5.在Unit1的Implementation部分的uses中加入Unit2。

  6.双击Form 1中的按钮构件Button1,添加如下代码:

  procedure TForm1.Button1Click(Sender:TObject);

  var

  ShowingPoint:TPoint;

  begin

  GetCursorPos(ShowingPoint); // 得到光标的当前坐标

  Form2.Left := ShowingPoint.X; // 让Form2在当前光标处显示

  Form2.Top := ShowingPoint.Y;

  Form2.Show;

  end;

  7.在Form2的OnDeactivate事件下添加如下代码:

  procedure TForm2.FormDeactivate(Sender:TObject);

  begin

  Close; // 当窗体失去焦点后,关闭自己。

  end;

  8.按F9键运行程序,双击Button1后,Form2就会像弹出菜单一样显示出来,单击Form1的任意处,Form2将会自动关闭。接下来朋友们就可以在Form2上任意设计自己的弹出菜单了。

  以上程序在Windows 2000 + Delphi 5中测试通过。