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

控制Delphi的窗口顯示位置

編輯:Delphi

  在使用Delphi進行工作時,也許需要將多個獨立的窗口放在一個主窗口中,但有不打算使用多文檔界面(MDI),那麼下面介紹的方法可能對你會有所啟發。直接控制窗口的產生過程,並指定它的容器對象即Parent屬性或ParentWindow 屬性。

  使用容器。這個容器是指可以容納目標窗口的控制元件(WindowsControl),它可以是窗口、面板、頁面控制等VCL對象。一個窗口在類別注冊後將調用API函數CreateWindow,函數調用時需要傳遞一個WndParent即父窗口的句柄。Delphi 已將該函數封裝在TcustomForm對象的CreateParams過程裡面了。原函數的參數也封裝在一個TCreateparams的記錄類型裡面。在IDE裡,我們重載它,然後在容器控制的單元中調用即可。假設要將Form2和Form3放在Form1的Panel1中,可以這樣做:

  Form2單元接口部分

  type
TForm2=Class(TForm)
pubic
procedureLoaded;override;
procedureCreateParams
(varParams:TParams);override;
end;

  實現部分

procedureTForm2.Loaded;
begin
inheritedLoaded;
Visible:=Flase;
Position:=poDefault;
BorderIcons:=[];
BorderStyle:=bsNone;
//注意此時的窗口邊界樣式和圖標,
改變這兩個值,看看有無其它變化。
HandNeeded;//如果窗口不存在,就生成它。
SetBouds(0,0,Width,Height);
//不改變窗口原來的大小。
end;
procedureTForm2.CreateParams
(varParams:TCreateParams);
begin
inheritedCreateParams(Params);
Params.WndParent:=(OwnerasTForm).Handle;
//指定父窗口的句柄。
Params.Style:=WS_CHILDorWS_CLIPSIBLINGS;
//注意窗口的樣式。
params.X:=0;
params.Y:=0;
end;

  Form3單元類似於Form2單元。注意理解Loaded方法的重載,以及和Create方法的區別,先後順序的不同。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved