5,388
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure OnFormPositionMessage(var msg: TMessage); message WM_FORM_INFO;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
fm: TForm2;
begin
try
fm := TForm2.Create(self);
fm.ShowModal;
finally
fm.Free;
end;
end;
procedure TForm1.OnFormPositionMessage(var msg: TMessage);
var
pos: TFormPosition;
begin
pos := PFormPosition(msg.WParam)^;
self.Caption := Format('mouseX:%d,mouseY:%d',[pos.mouseX,pos.mouseY]);
//显示更多内容自己加即可
end;
end.
子窗体代码
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
const
WM_FORM_INFO = WM_USER+100;
type
PFormPosition = ^TFormPosition;
TFormPosition = record
mouseX : integer;
mouseY : integer;
formTop : integer;
formLeft: integer;
nowTime : TDateTime;
end;
type
TForm2 = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pos: TFormPosition;
begin
pos.mouseX := x;
pos.mouseY := y;
pos.formTop := self.Top;
pos.formLeft:= self.Left;
pos.nowTime := Date();
SendMessage(Application.MainFormHandle,WM_FORM_INFO,Integer(@pos),0);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1Handle:= Self.Handle;
Form2.ShowModal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;
type
TForm2 = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
end;
var
Form2: TForm2;
Form1Handle: HWND;
implementation
{$R *.dfm}
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
S: String;
begin
S:= Format('Mouse:[%d,%d], Form2:[%d,%d,%d,%d], Time:', [X, Y, Left, Top, Width, Height]);
S:= S + FormatDateTime('yyyy-mm-dd_hh:nn:ss', Now);
SetWindowText(Form1Handle, PChar(S));
end;
end.