我这个窗体没有边框,我在bottom位置添加了一个panel想代替以前的标题栏,如何实现我鼠标放在标题栏panel的时候,能够移动整个窗体?
解决方案 »
- ADOQuery和maskedit问题!
- 关于“如何获得任务栏上所有正在运行程序的标题及其句柄”
- 我的delphi版本升级之路,分只给新手三个星星以下的,老鸟勿进,抱歉
- 再100分!你用delphi哪个版本?它为什么吸引你?
- TRzDBComboBox.Text不能及时刷新到相应的DataField中 ?
- 如何清空存储过程中参数的值?
- GetEnvironmentVariable()如何使用?????
- 100分求陈锐《Delphi分布式多层应用程序开发》一书的源码。先到先得分。。。
- 很简单的问题,解决后就给分!
- 如何让ADO连接SQL SERVER6.5时能显示中文?
- TEECHART使用TEXTOUT标注后,保存图片,标注消失了,怎么解决啊?
- 一个有关richview控件的奇怪问题!!
Y: Integer);
begin
//if (y<21) and (y>0) then begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$f012,0);
//end;
end;
MouseDownPos:Tpoint;
FormPos:Tpoint;
Panel的MouseDown事件procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
CurrentPos:Tpoint;
begin
FormPos.Y:=form1.Top;
FormPos.X:=form1.Left;MouseDownPos.X:=X;
MouseDownPos.Y:=Y;MouseDownPos:=Panel1.clienttoscreen(MouseDownPos);timer1.Enabled:=true;
end;
MouseUp事件procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
timer1.Enabled:=false;
end;
放个timer,触发100ms,起始enable为false。触发事件代码procedure TForm1.Timer1Timer(Sender: TObject);
var
CurrentPos:Tpoint;
begin
GetCursorPos(CurrentPos);form1.Top:=FormPos.Y+CurrentPos.Y-MouseDownPos.Y;
form1.Left:=FormPos.X+CurrentPos.X-MouseDownPos.X;
end;
uses Messages; 就有了这个方法比我的好
begin
ReleaseCapture;
SendMessage(self.Handle, WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);
end;
var
r: Trect;
p: Tpoint;
begin
inherited;
p.X := image1.Width-image2.Width;
p.Y := 0;
p := image1.ClientToScreen(p);
r.TopLeft := p;
p.X := image1.Width;
p.Y := image2.Height;
p := image1.ClientToScreen(p);
r.BottomRight := p;
if (msg.XPos<r.Left) or( msg.YPos>r.Bottom) then
begin
if (htclient = msg.Result) then
msg.Result := htcaption;
end;
end;
md: boolean;
x0, y0: Integer;procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
md := True;
x0 := X;
y0 := Y;
end;procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if md then
begin
Left := Left - x0 + X;
Top := Top - y0 + Y;
end;
end;procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
md := False;
end;