请教!!哪位高手会做这样的窗口。(100分)

  • 主题发起人 主题发起人 智利
  • 开始时间 开始时间

智利

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何在自己的程序里实现像Delphi里"属性窗口"一样可以拖动并带有磁性的窗口?
 
if (Left < 10) and (Top < 10) and
(Left <> 0) and (Top <> 0) then // 设定移动到左上角 10 点范围内时贴到边上去
begin
Left := 0;
Top := 0;
Msg.Result := 0;
end;
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
MPos:TPoint;
implementation

{$R *.DFM}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MPos.X := X;
MPos.Y := Y;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i:integer;
begin
if ssLeft in Shift then
begin
i:=50;
if (Form1.Left - (MPos.X-X))>i then
Form1.Left := Form1.Left - (MPos.X-X)
else Form1.Left :=0;

if (Form1.Top - (MPos.Y-Y))>i then
Form1.Top := Form1.Top - (MPos.Y-Y)
else Form1.Top := 0;

end;

end;

end.
 
好象有这样的控件,找一找吧!
 
我用的是Delphi6 如果有谁给我答案或程序,请发到我的邮箱ereata@yeah.net。这样我才
看得明白。或者把控件扔到我的邮箱中,谢谢!!
 
是Dock功能吗?设属性就可以了.
 
对于一般的工具栏,设它的属性就可以了
DragKind:= dkDock;
DragMode:= dmAutomatic;

对于别的类型的窗体,控件
Delphi 有一个现成的 Demo:
C:/Program Files/Borland/Delphi5/Demos/Docking
 
怎么放回去?
 
谢谢各位!
 
多人接受答案了。
 
后退
顶部