如何使form想oicq那样一到窗口边缘就自动缩进(先给150,如果有例程在加50-全部家当啊!)(150分)

  • 主题发起人 主题发起人 yoyoyoyo
  • 开始时间 开始时间
问题不明确!
 
就是象oicq那样,form拖到边上时放开就缩进去了,留下一条边,鼠标移过去就出来,和
windows工具栏使用自动隐藏那样!
 
AppBar
详见 Win32 SDK
 
是不是浮动工具条?
如果是,检索以前的记录已有答案
 
这是windows的标准控件appbar,www.csdn.net上有demos
 
处理控件消息CM_MOUSEENTER和CM_MOUSELEAVE即可。

举一个例子如下:

创建一个类

unit ShrinkPanel;

interface

uses
Messages, Controls, ExtCtrls;

type
TShrinkPanel=class (TPanel)
private
procedure CMMouseLeave(var Msg:TMessage); message CM_MOUSELEAVE;
end;

implementation

procedure TShrinkPanel.CMMouseLeave(var Msg:TMessage);
begin
Visible:=False;
end;

end.

写代码如下:

...
Panel:TShrinkPanel;
...

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel:=TShrinkPanel.Create(Self);
with Panel do begin
Parent:=Self;
Align:=alTop;
Height:=20;
Visible:=False;
end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Y<Panel.Height then Panel.Visible:=True;
end;
 
丢了 :)

写代码如下:

...
Panel:TShrinkPanel;
...

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel:=TShrinkPanel.Create(Self);
with Panel do begin
Parent:=Self;
Align:=alTop;
Height:=20;
Visible:=False;
end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Y<Panel.Height then Panel.Visible:=True;
end;
 
在系统中注册为系统工具工具条即可,“delphi4从入门到精通“中有代码。
 
TO 浪刀:
好象没有哦!!
在多少页?
 
有完整的程序吗,mailto:eggdelphi@citiz.net
 
我已经给你寄去了.
 
多人接受答案了。
 
后退
顶部