用过photoshop的朋友一定对它的那些方便的浮动面板记忆犹新,其实这些面板就是一个个的小窗体,但这些小窗体都放在photoshop的主窗体上(不是存在主窗体中),有自己的标题栏、最小化按钮及最大化按钮。 但它们与mdi程序不同的是,他们可以拖到主窗体外,更重要的是工作中所有这些面板窗体与主窗体最处于激活状态。
用spy & capture查看一下就不难发现,这些面板窗体的parent window都是photoshop的主窗体(以photoshop cs为例,主窗体的handle是001906d8,所有面板的parent window指向的就是001906d8),而一般我们创建的窗体的parent是为none的。
下面的代码就为实现这种photoshop式浮动窗口的示范:
//......
var
form1: tform1;
implementation
uses unit2;
{$r *.dfm}
procedure tform1.button1click(sender: tobject);
begin
//把form2的parent改为form1
form2 := tform2.createparented(form1.handle);
form2.show;
//使得form2处于激活状态
sendmessage(form2.handle, wm_ncactivate, ord(true), 0);
end;
procedure tform1.button2click(sender: tobject);
begin
form2.close;
end;
procedure tform1.formdestroy(sender: tobject);
begin
//记得加上这一句
if form2.showing then form2.close;
end;
end.
上面的代码就可以显示一个与form1同处激活状态的form2,再对form2的borderstyle与bordericons属性作一些必要的选择,就可以实现更加完美的效果!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器