線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2307
推到 Plurk!
推到 Facebook!

如何將已開啟的 子視窗, 顯示在 母視窗 的 panel 上

答題得分者是:pcplayer99
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-01-14 16:20:58 IP:211.21.xxx.xxx 訂閱
請教各位先進, 

1. 環境: XE6 , win7, MDI
2. 看見市面上軟體, 有將已開啟的 子視窗, 放到 主視窗 的 Panel 上, 類似 listbox 中, 點選後, 即可將 子視窗調出, 方便使用者點選, 已開啟的程式, 功能類似 MDI 中主選單中的 Window
的作法
3. 請問, 在 主視窗 內;要用什麼樣的 元件 組成?, 而其和 子視窗 又是如何 串連?
4. 子視窗, 我是用固定 位置的方式
謝謝!!!
------
DVF
mitchellhu
一般會員


發表:22
回覆:51
積分:14
註冊:2007-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-01-23 10:34:07 IP:59.126.xxx.xxx 訂閱
請參考 https://www.youtube.com/watch?v=fNT_m1cnK38 看看
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-01-26 14:50:35 IP:220.130.xxx.xxx 訂閱
謝謝 mitchellhu 的幫忙.., 點進去看了, 但不是我的問題.
抱歉!!!!
應該是我沒說的很清楚,
請參下附檔
MDIChild
===================引 用 mitchellhu 文 章===================
請參考 https://www.youtube.com/watch?v=fNT_m1cnK38 看看
------
DVF
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-01-26 15:04:13 IP:220.130.xxx.xxx 訂閱
補充說明:
1. 當點選到 MDI Form 中的, Open Windows 時, MDIChild 會 active
2. Open Windows 是在 MDI Form panel 中使用了, 那些元件?
謝謝!!!

mdichild
===================引 用 feng2939 文 章===================
謝謝 mitchellhu 的幫忙.., 點進去看了, 但不是我的問題.
抱歉!!!!
應該是我沒說的很清楚,
請參下附檔
MDIChild
===================引 用 mitchellhu 文 章===================
請參考 https://www.youtube.com/watch?v=fNT_m1cnK38 看看
------
DVF
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-01-29 13:42:05 IP:120.236.xxx.xxx 訂閱
不建议用 MDI Form

你采用另外一种办法,非 MDI Form,而是普通的 TForm。

假设:

Form1, Form2

在 Form1 上有一个 Panel1

Form2.Parent := Panel1;
Form2.BorderStyle := bsNone;
Form2.Align := alClient;
Form2.Show;


这样就把 Form2 显示到 Form1 的 Panel1 上面了。

feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-02-04 15:49:23 IP:211.21.xxx.xxx 訂閱
謝謝 pcplayer99 的指導.
我想要做到的功能是, 當點選 Open Windows 中,已使用中的 程式, 右側則會顯示, 程式內容, 如上面附圖的: Chart of Accounts. 而新增加的程式, 則會增加到 Open Windows 裡面, 如: Customer job List , Item List .... 等.
有看過國內 軟體廠商有此作法, 很想學著做.
PS:不好意思, 今天下午才收假上班, 測試您的方法, 晚了點. 謝謝!!!!

===================引 用 pcplayer99 文 章===================
不建议用 MDI Form

你采用另外一种办法,非 MDI Form,而是普通的 TForm。

假设:

Form1, Form2

在 Form1 上有一个 Panel1

Form2.Parent := Panel1;
Form2.BorderStyle := bsNone;
Form2.Align := alClient;
Form2.Show;


这样就把 Form2 显示到 Form1 的 Panel1 上面了。

------
DVF
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-02-09 15:10:04 IP:120.236.xxx.xxx 訂閱
上图中你用红色圈出来的【Open Windows】是一个 ListBox 或者 ListView 之类的东西。它只是用一个字符串来描述你开启了哪个 Form。

这里还有个概念:进程。

1. 如果你是想在一个程式里面(也就是一个进程里面,一个 EXE 程式里面),有多个不同功能的 Form,拿你开启一个 Form,就把对应的名字写到那个 ListBox 里面,并且将这个 Form 按照我上面说的方法,显示到右边的 Panel 上面。

2. 如果右边 Panel 上面显示的,是很多个不同的进程的Form(比如,你每个功能写成一个独立的 EXE 程式),那就稍微复杂点,但道理是相同的,只是这里是把其它进程的 Form 摆放到右边的 Panel 上面。

如何把其它程式(进程)的 Form 摆放到这个程式的某个 Panel 上面?首先你必须要知道那个程式的 Handle。具体的做法,你在网上搜索一下,有相关资料的。

===================引 用 feng2939 文 章===================
謝謝 pcplayer99 的指導.
我想要做到的功能是, 當點選 Open Windows 中,已使用中的 程式, 右側則會顯示, 程式內容, 如上面附圖的: Chart of Accounts. 而新增加的程式, 則會增加到 Open Windows 裡面, 如: Customer job List , Item List .... 等.
有看過國內 軟體廠商有此作法, 很想學著做.
PS:不好意思, 今天下午才收假上班, 測試您的方法, 晚了點. 謝謝!!!!

===================引 用 pcplayer99 文 章===================
不建议用 MDI Form

你采用另外一种办法,非 MDI Form,而是普通的 TForm。

假设:

Form1,‚ Form2

在 Form1 上有一个 Panel1

Form2.Parent := Panel1;
Form2.BorderStyle := bsNone;
Form2.Align := alClient;
Form2.Show;


这样就把‚ Form2 显示到 Form1 的 Panel1 上面了。

feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-02-09 17:15:46 IP:211.21.xxx.xxx 訂閱
謝謝 pcplayer99 的熱心指點.
向前進了一步.
在 母畫面加了一個 panel 及 listbox, 當新增一個 子畫面, 用 listbox1.Items.add('XXXX'); 可加入 listbox 中, 但無法點選 其中的 item, 若選擇時, 會出現 "cannot forus a disabled or invidible window".
不知這是什麼原因, 還是需要在panel 上參數做設定?
謝謝!!!

===================引 用 pcplayer99 文 章===================
上图中你用红色圈出来的【Open Windows】是一个 ListBox 或者 ListView 之类的东西。它只是用一个字符串来描述你开启了哪个 Form。

这里还有个概念:进程。

1. 如果你是想在一个程式里面(也就是一个进程里面,一个 EXE 程式里面),有多个不同功能的 Form,拿你开启一个 Form,就把对应的名字写到那个 ListBox 里面,并且将这个 Form 按照我上面说的方法,显示到右边的 Panel 上面。

2. 如果右边 Panel 上面显示的,是很多个不同的进程的Form(比如,你每个功能写成一个独立的 EXE 程式),那就稍微复杂点,但道理是相同的,只是这里是把其它进程的 Form 摆放到右边的 Panel 上面。

如何把其它程式(进程)的 Form 摆放到这个程式的某个 Panel 上面?首先你必须要知道那个程式的 Handle。具体的做法,你在网上搜索一下,有相关资料的。

===================引 用 feng2939 文 章===================
謝謝 pcplayer99 的指導.
我想要做到的功能是, 當點選 Open Windows 中,已使用中的 程式, 右側則會顯示, 程式內容, 如上面附圖的: Chart of Accounts. 而新增加的程式, 則會增加到 Open Windows 裡面, 如: Customer job List , Item List .... 等.
有看過國內 軟體廠商有此作法, 很想學著做.
PS:不好意思, 今天下午才收假上班, 測試您的方法, 晚了點. 謝謝!!!!

===================引 用 pcplayer99 文 章===================
不建议用 MDI Form

你采用另外一种办法,非 MDI Form,而是普通的 TForm。

假设:

Form1,ƒ‚‚ Form2

在 Form1 上有一个 Panel1

Form2.Parent := Panel1;
Form2.BorderStyle := bsNone;
Form2.Align := alClient;
Form2.Show;


这样就把ƒ‚‚ Form2 显示到 Form1 的 Panel1 上面了。

------
DVF
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2015-02-10 12:35:05 IP:120.236.xxx.xxx 訂閱
ListBox.Add('AForm1');

Form1.Parent := Panel1;
Form1.Align := alClient;
Form1.BorderStyle := bsNone;
Form1.Show;


Form2, Form3 照此办理。

然后,如果你在 ListBox 里面选择了一条, OnClick:

Case ListBox1.ItemIndex of
0: Form1.Show;
1: Form2.Show;
2: Form3.show;
end;
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#10 引用回覆 回覆 發表時間:2015-02-11 12:53:02 IP:220.133.xxx.xxx 訂閱
謝謝 pcplayer99 熱心的指導.
我曾看過 MDI LISTBOX 的設計方式, 是可行的.所以我暫時還是會走 MDI 的方式.
我目前是用 MDI , 在產生的 MAIN MENU 中的 WINDOWS 有此功能, 現想在 母畫面中的 PANEL 也有此功能.

MID 選擇 FORM 的方式是隨機的, CASE 的方式較難達成想要的目的.

===
Case ListBox1.ItemIndex of
0: Form1.Show;
1: Form2.Show;
2: Form3.show;
end;

謝謝!!!!

===================引 用 pcplayer99 文 章===================
ListBox.Add('AForm1');

Form1.Parent := Panel1;
Form1.Align := alClient;
Form1.BorderStyle := bsNone;
Form1.Show;


Form2, Form3 照此办理。

然后,如果你在 ListBox 里面选择了一条, OnClick:

Case ListBox1.ItemIndex of
0: Form1.Show;
1: Form2.Show;
2: Form3.show;
end;
------
DVF
系統時間:2017-12-13 21:14:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!