怎么制作像WINDOWS窗口左下角点击开始弹出的那种菜单? 怎么制作像WINDOWS窗口左下角点击开始弹出的那种菜单?DELPHI自带了这个组件吗?还是要自己写或是去下载专门制作这类菜单的控件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows开始菜单其实并不是菜单(Menu),是窗口(Windows),只是在窗口中加了特殊处理,使其看起来象菜单而已。你可以自己用一个窗口实现。在窗口中加几个SpeedButton就可以了。至于说菜单出现时的动画效果,可以使用AnimateWindow()函数实现。具体使用方法可以到google上搜一下。 ^_^ 我觉得QQ那个菜单也是仿照WINDOWS做的啊~有没有谁有这方面的经验,让参考一下~ 做成PopMenu,然后判断Menu的出现位置旧行了 非常规程序菜单吧?简易托盘图标控件-TTrayIcon可以实现!http://sd.2ccc.com/downloads/vcl/bars/iamdream_TrayIcon.rar至于菜单的样式,可采用界面控件! 以前用Memu做过一个仿制的。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type TForm1 = class(TForm) Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);vartep:integer;begintep:=0;systemparametersinfo(spi_setfasttaskswitch,1,@tep,0);systemparametersinfo(spi_screensaverrunning,1,@tep,0);//屏蔽Ctrl+F4&Ctrl+Alt+delend;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginif Y>screen.Height-30 thenbeginform2.left:=0;form2.top:=screen.Height-30;form2.width:=screen.Width;form2.height:=30;form2.show;endelseform2.hide;end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginif Y>screen.Height-30 thenbeginform2.left:=0;form2.top:=screen.Height-30;form2.width:=screen.Width;form2.height:=30;form2.show;endelseform2.hide;end;end.form2的源代码不给出了,调整一个合适的大小就可以了。form1.Align设置为alClient. 忘了说,form2上得放置一个TSpeedButton&TPopupMenu。当鼠标移动到一定得位置,Form2显示,点击TSpeedButton,弹出TPopupMenu. 通过SetMenuItemInfo将MenuItemInfo中的fType设置包含有MFT_OWNERDRAW属性然后在WM_MEASUREITEM事件里设定菜单尺寸最后在WM_DRAWITEM里重绘菜单项 高手们~说的那么复杂~如果DELPHI没有这方面的控件,看来只有自己用窗体实现是最好的办法了啊~ Delphi中如何远程通讯? DBGrid 多表更新问题 混合查询得到的数据集 一个关于触发器和时间检索问题选择!急 如何设置两组ADOQUERY+DATASOURCE+DBGRID进行多线程查询? 如何获跟FLASH传递参数 有msdn的请进! 怎样调试一个NT Service 关于WIN2K的快速查看 请各位高手帮帮我,如能解决,还有重谢(共 300 分)!!!!! 向各位高手请教一个关于模糊查询的问题:数据库的模糊查询,对整型的字段适用吗? 判断记录中的数据问题 急!!! DataModule1.ADODataSet1.Open;??
有没有谁有这方面的经验,让参考一下~
http://sd.2ccc.com/downloads/vcl/bars/iamdream_TrayIcon.rar
至于菜单的样式,可采用界面控件!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
tep:integer;
begin
tep:=0;
systemparametersinfo(spi_setfasttaskswitch,1,@tep,0);
systemparametersinfo(spi_screensaverrunning,1,@tep,0);//屏蔽Ctrl+F4&Ctrl+Alt+del
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Y>screen.Height-30 then
begin
form2.left:=0;
form2.top:=screen.Height-30;
form2.width:=screen.Width;
form2.height:=30;
form2.show;
end
else
form2.hide;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Y>screen.Height-30 then
begin
form2.left:=0;
form2.top:=screen.Height-30;
form2.width:=screen.Width;
form2.height:=30;
form2.show;
end
else
form2.hide;
end;end.form2的源代码不给出了,调整一个合适的大小就可以了。form1.Align设置为alClient.
然后在WM_MEASUREITEM事件里设定菜单尺寸
最后在WM_DRAWITEM里重绘菜单项
说的那么复杂~
如果DELPHI没有这方面的控件,看来只有自己用窗体实现是最好的办法了啊~