如何才能将子窗体紧贴在主窗体上,即使移动也不能出主窗体的范围(30分)

  • 主题发起人 主题发起人 天空4567
  • 开始时间 开始时间

天空4567

Unregistered / Unconfirmed
GUEST, unregistred user!
如何才能将子窗体紧贴在主窗体上,即使移动也不能出主窗体的范围。
1、两个窗体之间非MDIForm和CHILDForm关系;
2、单纯地把子窗体的.parent属性定义为主窗体是不足以实现的。
缺什么呢?谢谢大家。
 
指定parent之后, 允许子窗体可以拖动就可以了。
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure Move(var Message:Tmessage); message WM_MOVING;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Move(var Message: Tmessage);
var R:TRect;
begin
R:=Rect(10,10,1000,700); //换成你的mainform的ClientRect
if PRect(Message.lParam)^.Left<R.Left then
begin
PRect(Message.lParam)^.Left:=R.Left;
PRect(Message.lParam)^.Right:=R.Left+Width;
end;
if PRect(Message.lParam)^.Top<R.Top then
begin
PRect(Message.lParam)^.Top:=R.Top;
PRect(Message.lParam)^.Bottom:=R.Top+Height;
end;
if PRect(Message.lParam)^.Right>R.Right then
begin
PRect(Message.lParam)^.Left:=R.Right-Width;
PRect(Message.lParam)^.Right:=R.Right;
end;
if PRect(Message.lParam)^.Bottom>R.Bottom then
begin
PRect(Message.lParam)^.Top:=R.Bottom-Height;
PRect(Message.lParam)^.Bottom:=R.Bottom;
end;
inherited;
end;

end.
 
gz
这样都能看的出来是灌水?
 
TYZhang正解!
 
指定 parent句柄
 
把子窗体的Borderstyle属性设置为bsNone后,想把子窗体固定在主窗体某 位置上。
现在,既不能把子窗体放在主窗体上,更不能固定在主窗体的设定的位置上。
怎么办?
 
后退
顶部