关于消息处理和屏幕

zhukejun 2003-01-07 05:09:07
那位人雄知道
1.获得屏幕的尺寸
2.form上有一个panel,我想实现鼠标点在panel上也可以移动窗体,鼠标在form上我已经实现了
...全文
50 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
joky1981 2003-01-07
  • 打赏
  • 举报
回复
procedure TForm1.SeSkinPanel2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
//记录全屏图标的初始位置
begin
posx:= X;
posy:= Y;
end;

procedure TForm1.SeSkinPanel2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
//处理窗体移动
begin
if ssLeft in shift then
begin
SeSkinPanel2.Left:= SeSkinPanel2.Left+X-posx;
SeSkinPanel2.Top:= SeSkinPanel2.Top+Y-posy;
end;
end;
goodloop 2003-01-07
  • 打赏
  • 举报
回复
当你在panel上drag事件
发消息让系统以为点在title上
xzhifei 2003-01-07
  • 打赏
  • 举报
回复
呵,楼上的兄弟,是不是移动窗口,试试就知道了
goomoo 2003-01-07
  • 打赏
  • 举报
回复
xzhifei(飞) 和 ghyghost(著名关心CSDN结贴率爱国主义人士代表的代码是移动控件。
goomoo 2003-01-07
  • 打赏
  • 举报
回复
移动窗口:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, AppEvnts, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
lastX,lastY,dx,dy:cardinal;
startDrag:boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
lastx:=Mouse.CursorPos.x;
lasty:=Mouse.CursorPos.Y;
dx:=lastx-form1.Left;
dy:=lasty-form1.Top;
startDrag:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
startDrag:=false;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if startDrag then
begin
form1.Left:=Mouse.CursorPos.x-dx;
form1.Top:=Mouse.CursorPos.Y-dy;
end;
end;

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

end.
  • 打赏
  • 举报
回复
1: screen.width; screen.height;
2: procedure TForm1.panel1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
ReleaseCapture;
form1.panel1.Perform(WM_SYSCOMMAND, $F012, 0);
end;

祝:身体健康,答案和分数同样重要地:)!!!
xzhifei 2003-01-07
  • 打赏
  • 举报
回复

1.Screen.Width;Screen.Height;

2.在Panel控件的OnMouseMove事件中加入如下两句:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);

搞定,收工!!
xzhifei 2003-01-07
  • 打赏
  • 举报
回复

1.Screen.Width;Screen.Height;

2.在Panel控件的OnMouseMove事件中加入如下两句:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);

搞定,收工!!
goomoo 2003-01-07
  • 打赏
  • 举报
回复
Screen.width; Screen.height;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧