全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1866
推到 Plurk!
推到 Facebook!

創建Photoshop式浮動視窗應用程式

 
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-13 10:51:43 IP:222.248.xxx.xxx 未訂閱
創建Photoshop式浮動視窗應用程式    (文章被人四處盜用,所以乾脆貼到這裏來) 用過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屬性作一些必要的選擇,就可以實現更加完美的效果! 發表人 - h@visli 於 2005/06/13 11:06:59
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
homanfai
一般會員


發表:6
回覆:8
積分:2
註冊:2005-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-11 13:09:01 IP:202.175.xxx.xxx 未訂閱
如加入 SetWindowRgn(Handle,CreateRoundRectRgn(10,10,ClientWidth,ClientHeight,50,50), TRUE); 應該點做
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-13 21:43:26 IP:219.140.xxx.xxx 未訂閱
homanfai大大的 SetWindowRgn(Handle,CreateRoundRectRgn(10,10,ClientWidth,ClientHeight,50,50), TRUE); 我加在TForm1.Button1Click下 虽然实现圆滑边角 但感觉比较难看 我在点击
系統時間:2024-05-10 18:43:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!