⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delp016.html

📁 对于学习很有帮助
💻 HTML
字号:
<html><!-- #BeginTemplate "/Templates/fwolf001.dwt" -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>独孤之所 - 制作可移动的窗体的MovePanel控件</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!-- #EndEditable --> 
<style type="text/css">
<!--
body {  font-family: "宋体"; font-size: 9pt}
td {  font-family: "宋体"; font-size: 9pt}
a:hover {  text-decoration: underline}
a {  text-decoration: none}
input {  font-family: "宋体"; font-size: 9pt}
select {  font-family: "宋体"; font-size: 9pt}
-->
</style>
</head>


<body>
<!-- #BeginEditable "2%C7%F8" --> <!-- #EndEditable -->
<hr size="1">
<!-- #BeginEditable "old%20data" --><!-- #EndEditable --> <br>
<table width="584" border="0" align="center" cellspacing="1">
  <tr> 
    <td width="582"> <font color="#FF3333"> 
      <div align="center"><!-- #BeginEditable "%B1%EA%CC%E2" --> <!-- #EndEditable --></div>
      </font> </td>
  </tr>
  <tr> 
    <td width="582"> 
      <div align="center"><!-- #BeginEditable "%D7%F7%D5%DF" --><!-- #EndEditable --></div>
    </td>
  </tr>
  <tr> 
    <td width="582"><!-- #BeginEditable "%CE%C4%B1%BE%C7%F8" --><center><font color="#0000c0"><font color="#FF3333">制作可移动的窗体的MovePanel控件</font><br>
        </font>福州大学<br>
        王骏 
      </center>
      <p><font color="#ffffff">----</font> 使用Winamp是有个EasyMove的功能,也就是不在标题栏上拖动鼠标就能移动窗体,虽然EasyMove功能很好实现,可还不如做个控件一劳永逸,另外这个控件还有一个更有用的功能,呆会儿就能见到。我们先看看如何实现它吧!  
      <p><font color="#ffffff">----</font> 建立一个空的Unit,把以下代码Copy进去,再把它添加到Delphi的控件库里,这样MovePanel控件就做好了。  
      <pre>
unit MovePanel;
interface
uses
  Windows, Classes, Controls,ExtCtrls;
type
  TMovePanel = class(TPanel)  //这个控件是继承Tpanel类的
  private
    PrePoint:TPoint;
    Down:Boolean;
    { Private declarations }
  protected
    { Protected declarations }
  public
  	constructor Create(AOwner:TComponent);
	override;
  	//重载鼠标事件,抢先处理消息
procedure MouseDown(Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);override;
   	procedure MouseUp(Button: TMouseButton; 
Shift: TShiftState; X, Y: Integer);override;
   	procedure MouseMove(Shift: TShiftState;
 X, Y: Integer);override;
 	{ Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

constructor TMovePanel.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);	//继承父类的Create方法
end;

procedure TMovePanel.MouseDown(Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (Button=MBLeft) then
    begin
    Down:=true;
    GetCursorPos(PrePoint);
    end;
  //如果方法已存在,就触发相应事件去调用它,
若不加此语句会造成访存异常
 if assigned(OnMouseDown) then
  	OnMouseDown(self,Button,shift,x,y);
end;

procedure TMovePanel.MouseUp(Button: 
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (Button=MBLeft) and Down then
  	Down:=False;
  if assigned(OnMouseUp) then
  	OnMouseUp(Self,Button,shift,X,y);
end;

procedure TMovePanel.MouseMove(Shift:
 TShiftState; X, Y: Integer);
Var
  NowPoint:TPoint;
begin
  if down then
    begin
GetCursorPos(nowPoint);
//self.Parent在Form中就是MovePanel所在的窗体,
或是MovePanel所在的容器像Panel
    self.Parent.Left:=self.Parent.left
	+NowPoint.x-PrePoint.x;
    self.parent.Top:=self.Parent.Top
	+NowPoint.y-PrePoint.y;
    PrePoint:=NowPoint;
    end;
  if Assigned(OnMouseMove) then
  	OnMouseMove(self,Shift,X,y);
end;

procedure Register;
begin
  RegisterComponents('Md3', [TMovePanel]);
end;

end.
</pre> 
      <font color="#ffffff">----</font> 接下来,看看怎么用它吧。  
      <p><font color="#ffffff">----</font> <b>用法一:</b>拖一个Form下来,加上我们的MovePanel,Align属性设为alClient,运行一下,移动窗体的效果还不错吧!想取消此功能,把MovePanel的Enabled属性设为False即可,简单吧!  
      <p><font color="#ffffff">----</font> <b>用法二:</b>拖一个Form下来,加上普通的Panel,调整好大小,再在Panel上加上我们的MovePanel,  
        Align属性设为alClient,运行一下,这一次在我们拖动MovePanel时不是窗体在移动,而是Panel和MovePanel一起在窗体上移动,如果我们再把其他的控件放在MovePanel上,就成了可以在窗体上任意移动的控件了,就这么简单!  
      <!-- #EndEditable --></td> 
  </tr> 
  <tr> 
    <td width="582"><!-- #BeginEditable "%B1%B8%D7%A2" --><!-- #EndEditable --></td> 
  </tr> 
</table> 
<br> 
<p align="center">&nbsp; </p> 
</body> 
<!-- #EndTemplate --></html> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -