To Kingron问一个窗口移动的问题(第二次,网站链接出错了) MSDN里面介绍得很清楚了。还要别人给你翻译出来不成。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 To GoodHopeMSDN的那一段 To GoodHope我查了WM_GETMINMAXINFO的说明但是还是没有办法将虚框去掉. 你比较一下用Form的Constraint.MaxWidth,MaxHeight和下面的代码的效果就知道了.type TForm1 = class(TForm) procedure wmgetminmaxinfo(var msg:tmessage);message wm_getminmaxinfo; private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.wmgetminmaxinfo(var msg: tmessage);var p:^TMinmaxinfo;begin p:=pointer(msg.LParam); p^.ptMaxTrackSize.y:=500; p^.ptMaxSize.x:=500; p^.ptMaxSize.y:=500; p^.ptMaxTrackSize.x:=500;end; 的确效果不一样,你的方法虚框不会变大可是我希望根本不出现边框,不知有没有办法(不要说在显示属性里改一下哦)就是象,Word的工具栏拉下来时的窗口一样。也就是说不改显示属性但仍然有那个效果。 %^$&@^$@$^@,吐血,Word的什么效果?Word的窗口改变大小的时候也有那个虚框啊. 是Word的工具栏拉下来成为一个独立的窗口的时候,这时这个窗口在Move时没有虚框且里面的内容也跟着移动。 自己处理,如Var fMoveForm : boolean; ptLeftTop, ptCursor : TPoint;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin If Shift <> [ssLeft] Then Exit; fMoveForm := true; Screen.Cursor := crSizeAll; ptLeftTop := Point(Left, Top ); GetCursorPos( ptCursor );end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Var ptNewCursor : TPoint;begin If Shift <> [ssLeft] Then Exit; If Not fMoveForm Then Exit; GetCursorPos( ptNewCursor ); If (ptNewCursor.X = ptCursor.X) And (ptNewCursor.Y=ptCursor.Y) Then Exit; Left := Left + ptNewCursor.X - ptCursor.X; Top := Top + ptNewCursor.Y - ptCursor.Y; ptCursor.X := ptNewCursor.X; ptCursor.Y := ptNewCursor.Y;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin// If Shift <> [ssLeft] Then Exit; Screen.Cursor := crDefault; fMoveForm := false;end; 上述是按住窗口客户区拖动的例子,以下模拟按住窗口标题栏平滑拖动:unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } fMoveForm : boolean; ptLeftTop, ptCursor : TPoint; procedure WMNCLButtonDown( Var msg : TWMNCLButtonDown); message wm_nclbuttondown; public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure Tform1.WMNCLButtonDown( Var msg : TWMNCLButtonDown);begin If msg.HitTest <> HTCAPTION Then Begin Inherited; Exit; End; fMoveForm := true; SetCapture( Handle ); Screen.Cursor := crSizeAll; ptLeftTop := Point(Left, Top ); GetCursorPos( ptCursor );end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Var ptNewCursor : TPoint;begin If Not fMoveForm Then Exit; GetCursorPos( ptNewCursor ); If (ptNewCursor.X = ptCursor.X) And (ptNewCursor.Y=ptCursor.Y) Then Exit; Left := Left + ptNewCursor.X - ptCursor.X; Top := Top + ptNewCursor.Y - ptCursor.Y; ptCursor.X := ptNewCursor.X; ptCursor.Y := ptNewCursor.Y;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin If Not fMoveForm Then Exit; Screen.Cursor := crDefault; fMoveForm := false; ReleaseCapture;end;end. 请教关于用delphi访问网页的问题 请教关于delphi7读取内存中字符串的问题。 delphi 实现两个不同数据库之间数据交换 感谢wcj86009大哥的帮助,请进来接分.. 功能模块按bpl编译的问题 delphi中如何调用帮助?我是初学者,请多多指教 求救:非常奇怪的乱码 !!! StringGrid如何实现双击不同的列,结果不同?多谢了。 请帮忙:Dll名,Dll中的函数是动态的怎么样调用?????? 求教最优化算法,应该是背包算法的实现 线程111 紧急求助: 关于在启动封面中使用ShockwaveFlash控件的问题!!
MSDN的那一段
我查了WM_GETMINMAXINFO的说明但是还是没有办法将虚框去掉.
TForm1 = class(TForm)
procedure wmgetminmaxinfo(var msg:tmessage);message wm_getminmaxinfo;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.wmgetminmaxinfo(var msg: tmessage);
var
p:^TMinmaxinfo;
begin
p:=pointer(msg.LParam);
p^.ptMaxTrackSize.y:=500;
p^.ptMaxSize.x:=500;
p^.ptMaxSize.y:=500;
p^.ptMaxTrackSize.x:=500;
end;
可是我希望根本不出现边框,不知有没有办法(不要说在显示属性里改一下哦)
就是象,Word的工具栏拉下来时的窗口一样。也就是说不改显示属性但仍然有那个效果。
Var fMoveForm : boolean;
ptLeftTop, ptCursor : TPoint;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Shift <> [ssLeft] Then Exit;
fMoveForm := true;
Screen.Cursor := crSizeAll;
ptLeftTop := Point(Left, Top );
GetCursorPos( ptCursor );
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var ptNewCursor : TPoint;
begin
If Shift <> [ssLeft] Then Exit;
If Not fMoveForm Then Exit; GetCursorPos( ptNewCursor );
If (ptNewCursor.X = ptCursor.X) And (ptNewCursor.Y=ptCursor.Y) Then Exit;
Left := Left + ptNewCursor.X - ptCursor.X;
Top := Top + ptNewCursor.Y - ptCursor.Y;
ptCursor.X := ptNewCursor.X;
ptCursor.Y := ptNewCursor.Y;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// If Shift <> [ssLeft] Then Exit;
Screen.Cursor := crDefault;
fMoveForm := false;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
fMoveForm : boolean;
ptLeftTop, ptCursor : TPoint; procedure WMNCLButtonDown( Var msg : TWMNCLButtonDown); message wm_nclbuttondown;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure Tform1.WMNCLButtonDown( Var msg : TWMNCLButtonDown);
begin
If msg.HitTest <> HTCAPTION Then Begin Inherited; Exit; End;
fMoveForm := true;
SetCapture( Handle );
Screen.Cursor := crSizeAll;
ptLeftTop := Point(Left, Top );
GetCursorPos( ptCursor );
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var ptNewCursor : TPoint;
begin
If Not fMoveForm Then Exit; GetCursorPos( ptNewCursor );
If (ptNewCursor.X = ptCursor.X) And (ptNewCursor.Y=ptCursor.Y) Then Exit;
Left := Left + ptNewCursor.X - ptCursor.X;
Top := Top + ptNewCursor.Y - ptCursor.Y;
ptCursor.X := ptNewCursor.X;
ptCursor.Y := ptNewCursor.Y;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Not fMoveForm Then Exit;
Screen.Cursor := crDefault;
fMoveForm := false;
ReleaseCapture;
end;end.