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

創建Photoshop式浮動窗口應用程序

編輯:Delphi
用過Photoshop的朋友一定對它的那些方便的浮動面板記憶猶新,其實這些面板就是一個個的小窗體,但這些小窗體都放在Photoshop的主窗體上(不是存在主窗體中),有自己的標題欄、最小化按鈕及最大化按鈕。但它們與MDI程序不同的是,他們可以拖到主窗體外,更重要的是工作中所有這些面板窗體與主窗體最處於激活狀態。
  
  用Spy & Capture查看一下就不難發現,這些面板窗體的Parent Window都是Photoshop的主窗體(以Photoshop CS為例,主窗體的Handle是001906D8,所有面板的Parent Window指向的就是001906D8),而一般我們創建的窗體的Parent是為None的。
  
  下面的代碼就為實現這種Photoshop式浮動窗口的示范:
  
  //......

  var
    Form1: TForm1;

  implementation

  uses Unit2;

  {$R *.dfm}

  procedure TForm1.Button1Click(Sender: TObject);
  begin
    //把Form2的Parent改為Form1
    Form2 := TForm2.CreateParented(Form1.Handle);
    Form2.Show;
    //使得Form2處於激活狀態
    SendMessage(Form2.Handle, WM_NCACTIVATE, Ord(True), 0);
  end;

  procedure TForm1.Button2Click(Sender: TObject);
  begin
    Form2.Close;
  end;

  procedure TForm1.FormDestroy(Sender: TObject);
  begin
    //記得加上這一句
    if Form2.Showing then Form2.Close;
  end;

  end.
  
  上面的代碼就可以顯示一個與Form1同處激活狀態的Form2,再對Form2的BorderStyle與BorderIcons屬性作一些必要的選擇,就可以實現更加完美的效果!

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