用delphi移动窗口~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用delphi移动窗口~相关的知识,希望对你有一定的参考价值。

如何用Delphi移动一个别的程序窗口呢?

如我开一个游戏在屏幕的右下角。我想用delphi编一个程序,把这个游戏窗口移到左上角,或移到指定的X.Y坐标。

怎么做?
能不能给个例子。。如我想把记事本标题为‘1.txt - 记事本’的窗口移到0,0的坐标上该怎么做?

var
h :THandle;
begin
h := FindWindow('Notepad','1.txt - 记事本');
if h <> 0 then
SetWindowPos(h,0,0,0,0,0,SWP_NOSIZE);
end;
参考技术A 调用系统函数 SetWindowPos,设置窗口位置。

请问delphi 的panel 怎么移动啊,就在自己的窗口中移动,不要超出窗口!谢谢!

参考技术A unit Unit1;

interface

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

type
TForm1 = class(TForm)
Timer1: TTimer;
Panel1: TPanel;
Panel2: TPanel;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
Private declarations
public
Public declarations
end;

var
Form1: TForm1;
// 移动时的偏移值
Xadd: Shortint = 1;
Yadd: Shortint = 1;

implementation

$R *.dfm

procedure TForm1.FormCreate(Sender: TObject);
begin
// 设定Form的相关属性
Panel1.Height := 432;
Panel1.Width := 592;
Panel1.Left := (ClientWidth - Panel1.Width) div 2;
Panel1.Top := (ClientHeight - Panel1.Height) div 2;
Panel2.Height := 32;
Panel2.Width := 32;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// 根据ICON位置变更移动偏移量
if Panel2.Left <= Panel1.Left then
Xadd := 1
else if Panel2.Left + Panel2.Width >= Panel1.Left + Panel1.Width then
Xadd := -1;
if Panel2.Top <= Panel1.Top then
Yadd := 1
else if Panel2.Top + Panel2.Height >= Panel1.Top + Panel1.Height then
Yadd := -1;
// 变更ICON位置
Panel2.Left := Panel2.Left + Xadd;
Panel2.Top := Panel2.Top + Yadd;
end;

end.
参考技术B 设定panel的top,left属性
panel.top+panel.height<=窗体的高度

panel.left+panel.width<=窗体的宽度本回答被提问者采纳

以上是关于用delphi移动窗口~的主要内容,如果未能解决你的问题,请参考以下文章

请问delphi 的panel 怎么移动啊,就在自己的窗口中移动,不要超出窗口!谢谢!

Delphi 如何判断鼠标指针是不是在窗口中

为啥我用delphi编程获取窗口句柄不成功?

delphi的窗体窗口

Delphi主窗口任务栏菜单的问题(转发WM_SYSCOMMAND到Application)

delphi中如何编程获取其它程序窗口的大小?