程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 控制窗體的變化的技巧

控制窗體的變化的技巧

編輯:Delphi
     我們可以通過設置窗體的屬性以及編程的方法,限制和控制窗體的變化。如讓窗體不能最小化、最大化、移動,甚至不能關閉。

  使用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;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved