如何阻止用移动窗体或改变它的大小 ruti 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 type TForm1 = class(TForm) privateprocedure WMPosChange(var Message: TWMWINDOWPOSCHANGING);message M_WINDOWPOSCHANGING; end;var Form1: TForm1;implementation{$R *.dfm}procedure Tform1.WMPosChange(var Message: TWMWINDOWPOSCHANGING);begin PWindowPos(TMessage(Message).lParam).Flags := PWindowPos(TMessage(Message).lParam).Flags or SWP_NOMOVE or SWP_NOSIZE;end; 方法一:果不想提供最大化或最小化功能,也可以将其设为“Fixed Dialog”。方法二:把窗体的最小化,最大化属性设置成false,同时让窗体打开时就处于最大话(有这个属性的,好在属性列最底下)//////////////DELPHI:控制窗体的变化 2005-04-07 我们可以通过设置窗体的属性以及编程的方法,限制和控制窗体的变化。如让窗体不能最小化、最大化、移动,甚至不能关闭。 使用Form的BorderIcon属性,我们可设置窗体是否具有系统菜单(biSystemMenu)、最小化按钮(biMinimize)、最大化按钮(biMaximize)和帮助按钮(biHelp)。 BorderIcon属性的这4个子属性均只有True和False属性。默认情况下四个子属性均为True。若将biSystemMenu属性设置为False,则不管其他属性如何设置,窗体此时不仅没有系统菜单,连最大最小按钮也没有,窗体不能最小化,也不能关闭。不管如何设置BorderIcon属性,窗体都能通过拖动边界来改变大小。 使用Form的BorderStyle属性,可以设置窗体的边界风格。常用的选项有四种:BsDialog(对话框边界)、bsNone(无边界)、bsSingle(单线边界)和bsSize(可改变大小的标准边界)。如果设置BorderStyle属性为BsDialog,则不能通过拖动边界来改变窗体大小,另外如果此时BorderIcon的biHelp子属性为True,窗体将显现出帮助按钮。如果设置BorderStyle属性为bsSingle,也不能通过拖动边界来改变窗体大小,但此时具有最大、最小和关闭按钮。 通过Form的Position属性可设置窗体的初始位置,如选择DesktopCenter为桌面中心,ScreenCenter为屏幕中心,等等。 如何不让窗体移动能,这是不能通过属性设置来实现的。我们可以通过编程来实现,拦下 WM_NCHITTEST 消息, 对该消息的处理为:一概回应鼠标点在窗口的 Client 区域, 相信这个视窗就呆呆的不会动了。 例程如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Close; // 不可少, 因为已经没有其他方法能关闭此窗口了 end; procedure TForm1.WMNCHitTest(var Msg: TMessage); begin inherited; // 这样,移动就不可能了... Msg.Result := HTCLIENT; end; end. 可以设置属性让form不能移动form的Align属性设成了alCustom 如何判断stringgrid中是否存在重复值? 关于两个不同的数据表,导入数据的问题? 要升级了,请兄弟姐妹们赐名! 如何通过程序控制让网络上的两台机器的系统时间同步? 三层连接中间层的问题 没有一套精致的图标是我心中永远的痛,请问各位大侠有没有,50分相送! 从com+调用webservice如何实现? 为什么我的客户端winsocket的send不能激活服务器端的read 如何对一个表中的数据进行条件选择后,将这些数据移至另外一个表中或一个临时表中。 指针!!!! 有关tree的功能.的实现 如何屏蔽TwebBrowser中页面弹出的对话框?
TForm1 = class(TForm)
private
procedure WMPosChange(var Message: TWMWINDOWPOSCHANGING);message M_WINDOWPOSCHANGING;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.WMPosChange(var Message: TWMWINDOWPOSCHANGING);
begin
PWindowPos(TMessage(Message).lParam).Flags := PWindowPos(TMessage(Message).lParam).Flags or SWP_NOMOVE or SWP_NOSIZE;
end;
把窗体的最小化,最大化属性设置成false,同时让窗体打开时就处于最大话(有这个属性的,好在属性列最底下)//////////////DELPHI:控制窗体的变化
2005-04-07
我们可以通过设置窗体的属性以及编程的方法,限制和控制窗体的变化。如让窗体不能最小化、最大化、移动,甚至不能关闭。 使用Form的BorderIcon属性,我们可设置窗体是否具有系统菜单(biSystemMenu)、最小化按钮(biMinimize)、最大化按钮(biMaximize)和帮助按钮(biHelp)。 BorderIcon属性的这4个子属性均只有True和False属性。默认情况下四个子属性均为True。若将biSystemMenu属性设置为False,则不管其他属性如何设置,窗体此时不仅没有系统菜单,连最大最小按钮也没有,窗体不能最小化,也不能关闭。不管如何设置BorderIcon属性,窗体都能通过拖动边界来改变大小。 使用Form的BorderStyle属性,可以设置窗体的边界风格。常用的选项有四种:BsDialog(对话框边界)、bsNone(无边界)、bsSingle(单线边界)和bsSize(可改变大小的标准边界)。如果设置BorderStyle属性为BsDialog,则不能通过拖动边界来改变窗体大小,另外如果此时BorderIcon的biHelp子属性为True,窗体将显现出帮助按钮。如果设置BorderStyle属性为bsSingle,也不能通过拖动边界来改变窗体大小,但此时具有最大、最小和关闭按钮。 通过Form的Position属性可设置窗体的初始位置,如选择DesktopCenter为桌面中心,ScreenCenter为屏幕中心,等等。 如何不让窗体移动能,这是不能通过属性设置来实现的。我们可以通过编程来实现,拦下 WM_NCHITTEST 消息, 对该消息的处理为:一概回应鼠标点在窗口的 Client 区域, 相信这个视窗就呆呆的不会动了。 例程如下: unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private { Private declarations }
procedure WMNCHitTest(var Msg: TMessage);
message WM_NCHITTEST; public { Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close; // 不可少, 因为已经没有其他方法能关闭此窗口了
end;
procedure TForm1.WMNCHitTest(var Msg: TMessage);
begin
inherited; // 这样,移动就不可能了...
Msg.Result := HTCLIENT;
end;
end.