unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
point1: TPoint;
begin
point1:=Button1.Parent.ClientToScreen(Button1.BoundsRect.TopLeft);
point1:=ClientToScreen(point1);
caption := 'X:'+IntToStr(point1.x)+' '+
'Y:'+IntToStr(point1.y);
Form2:= TForm2.Create(self);
try
Form2.SetPosition(point1.x, point1.y); //x右邊到元件 y上邊到元件
Form2.ShowModal;
finally
Form2.Free;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure SetPosition(x, y: Integer);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.SetPosition(x, y: Integer);
begin
self.left:=x-(self.Width div 2);
self.Top:=y-self.Height;
end;
end.