求代码 无边框窗口如何实现 鼠标按下移动 改变窗口大小的功能!谢谢 求代码 无边框窗口如何实现 鼠标按下移动 改变窗口大小的功能!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 form窗口的borderstyle的屬性為bsnone就是無變阿.在鼠标事件裡面寫阿, 自己研究以下可以寫出來的, public { Public declarations } procedure CreateParams(var Params: TCreateParams); override; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); with Params do begin Style := (Style or WS_POPUP) xor (ws_dlgframe); end;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin ReleaseCapture; PerForm(WM_syscommand,$F012,0);end; 鼠标按下移动时改变窗口的height ,width值 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, 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); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } startX,startY:integer; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if (ssLeft in Shift) then begin screen.Cursor:=crDrag; self.Left:=self.Left+X-startX; self.Top:=self.Top+Y-startY; end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin screen.Cursor:=crdefault;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin startX:=X; startY:=Y;end;end. 好了 根据: heluqing(鉴之小河) ( ) 信誉:100 的代码改了一下实现改变窗体大小的功能了不过还有一个问题 就是窗口调整大小的时候没有 调整效果我们在调整窗口的时候程序都会给出一个虚框 如何把他做出来呢??高手帮忙呀?? 我程序现在的代码 private { Private declarations } startX,startY:integer; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin startX:=X; startY:=Y;end;procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginif (ssLeft in Shift) then begin screen.Cursor:=crSizeNWSE; end;end;procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin screen.Cursor:=crdefault; self.Width := Self.Width + x - startx; self.Height := self.Height + y - starty;end;end. borderstyle 用默认的bsSizeable,不要用bsnone 转贴:把form窗口的borderstyle的屬性為bsnoneunit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private procedure WMNCHITTEST(var Msg : TWMNCHITTEST); message WM_NCHITTEST; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);const cOffset = 10;var vPoint: TPoint;begin inherited; vPoint := ScreenToClient(Point(Msg.XPos, Msg.YPos)); if PtInRect(Rect(0, 0, cOffset, cOffset),vPoint) then Msg.Result := HTTOPLEFT else if PtInRect(Rect(Width - cOffset, Height - cOffset, Width, Height), vPoint) then Msg.Result := HTBOTTOMRIGHT else if PtInRect(Rect(Width - cOffset, 0, Width, cOffset), vPoint) then Msg.Result := HTTOPRIGHT else if PtInRect(Rect(0, Height - cOffset, cOffset, Height), vPoint) then Msg.Result := HTBOTTOMLEFT else if PtInRect(Rect(cOffset, 0, Width - cOffset, cOffset), vPoint) then Msg.Result := HTTOP else if PtInRect(Rect(0, cOffset, cOffset, Height - cOffset), vPoint) then Msg.Result := HTLEFT else if PtInRect(Rect(Width - cOffset, cOffset, Width, Height - cOffset), vPoint) then Msg.Result := HTRIGHT else if PtInRect(Rect(cOffset, Height - cOffset, Width - cOffset, Height), vPoint) then Msg.Result := HTBOTTOM;end;procedure TForm1.FormCreate(Sender: TObject);beginend;end. 当cxGrid的从表为空时,如何让主表前面的加号不显示? 急啊!!!哪们大哥能指点一下啊!!! 远程连接sql server2000数据库问题,高手请进!!!在线急等!!!!! 急...急....Indy中Idpop3控件异常处理的问题???? 怎么才可以启动服务????????????? 一个小问题,解决给分 如何批量修改jpg格式的图片大小? 寻找“斑竹”或者“编程前辈”帮忙! 大家来看看这段代码错在那里, 寻找用FTP在两台机器之间传送文件的源代码!!!!!!!(我给30分) 初级问题:如何实现打开database1不用输入密码 在创建一个进程时,系统会不会出现一个消息
自己研究以下可以寫出來的,
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := (Style or WS_POPUP) xor (ws_dlgframe);
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
PerForm(WM_syscommand,$F012,0);
end;
Windows, Messages, SysUtils, Variants, 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);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
startX,startY:integer;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssLeft in Shift) then
begin
screen.Cursor:=crDrag;
self.Left:=self.Left+X-startX;
self.Top:=self.Top+Y-startY;
end;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
screen.Cursor:=crdefault;
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
startX:=X;
startY:=Y;
end;end.
实现改变窗体大小的功能了不过还有一个问题 就是窗口调整大小的时候没有 调整效果
我们在调整窗口的时候程序都会给出一个虚框 如何把他做出来呢??
高手帮忙呀??
private
{ Private declarations }
startX,startY:integer;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
startX:=X;
startY:=Y;
end;procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssLeft in Shift) then
begin
screen.Cursor:=crSizeNWSE;
end;
end;procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
screen.Cursor:=crdefault;
self.Width := Self.Width + x - startx;
self.Height := self.Height + y - starty;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure WMNCHITTEST(var Msg : TWMNCHITTEST); message WM_NCHITTEST; public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);const cOffset = 10;var vPoint: TPoint;begin inherited; vPoint := ScreenToClient(Point(Msg.XPos, Msg.YPos)); if PtInRect(Rect(0, 0, cOffset, cOffset),vPoint) then Msg.Result := HTTOPLEFT else if PtInRect(Rect(Width - cOffset, Height - cOffset, Width, Height), vPoint) then Msg.Result := HTBOTTOMRIGHT else if PtInRect(Rect(Width - cOffset, 0, Width, cOffset), vPoint) then Msg.Result := HTTOPRIGHT else if PtInRect(Rect(0, Height - cOffset, cOffset, Height), vPoint) then Msg.Result := HTBOTTOMLEFT else if PtInRect(Rect(cOffset, 0, Width - cOffset, cOffset), vPoint) then Msg.Result := HTTOP else if PtInRect(Rect(0, cOffset, cOffset, Height - cOffset), vPoint) then Msg.Result := HTLEFT else if PtInRect(Rect(Width - cOffset, cOffset, Width, Height - cOffset), vPoint) then Msg.Result := HTRIGHT else if PtInRect(Rect(cOffset, Height - cOffset, Width - cOffset, Height), vPoint) then Msg.Result := HTBOTTOM;end;
procedure TForm1.FormCreate(Sender: TObject);
beginend;end.