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

TFrame 能否 等待我執行完畢後程式繼續向下。

答題得分者是:leveon
kuraki5336
一般會員


發表:10
回覆:19
積分:20
註冊:2010-06-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-09-30 16:53:14 IP:114.46.xxx.xxx 訂閱
在使用Frame的時候 如果想要像TForm.ShowModal 的話
當我做完我Frame上的動作後成是在繼續往下 ,會怎麼做呢?

龜山阿萬的文章她是利用TFloatAnimation的OnFinish來做的。
覺得有點麻煩,但可行。在程式上需要多了很多的Code..。
http://www.cnblogs.com/onechen/p/3627771.html

不知道大家都是怎麼處理這個的。?




pcplayer99
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2016-09-30 20:59:44 IP:120.237.xxx.xxx 訂閱
究竟是 TFrame 还是 TForme ??
stacker_liew
初階會員


發表:48
回覆:111
積分:46
註冊:2004-05-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2016-10-01 15:00:18 IP:42.153.xxx.xxx 訂閱
建議一個APP只有一個Base Form,就是Main Form,接下來的畫面都用各種Layout來顯示。
若你的APP裡有超過一個Form的話,你很快會發現資源會被吃光光,然後軟件載入變超慢。
這是我個人的經驗。
===================引 用 kuraki5336 文 章===================
在使用Frame的時候 如果想要像TForm.ShowModal 的話
當我做完我Frame上的動作後成是在繼續往下 ,會怎麼做呢?

龜山阿萬的文章她是利用TFloatAnimation的OnFinish來做的。
覺得有點麻煩,但可行。在程式上需要多了很多的Code..。
http://www.cnblogs.com/onechen/p/3627771.html

不知道大家都是怎麼處理這個的。?




P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2016-10-02 11:18:45 IP:118.169.xxx.xxx 未訂閱
確實如 Stacker 所言, 使用 Form 會吃掉大量的資源, 如果行動裝置效能不好的, 可能會lag很嚴重, 閃退機率則要看手機, 有些手機3-5次後就閃退, 有些十來次都沒問題, 但在 ios上可能撐不到5次, 可是這是很予盾的一件事, 
李維老師建議使用 TFrame 或 TTabControl 來取代Form, 但我自身的經驗, 使用 TFrame 真的很難用, 它無法展示一些 TForm 特有的功能, 使用 TTab 又因為 Tab 的切換十分麻煩(指的是在設計中), 沒有什麼比 Form 在設計上, 對設計師而言好用, 隨時可在 Form上切換, 這對設計者而言, 可有效大幅度的減少設計的浪費時間, 而我也嘗試過全部用 Layer 的來做, 但 Layer 沒有分頁的概念, 我曾一個 Form 上疊了 10來個 Layer, 然後就是惡夢的開始, 因為畫面就這麼大, 10幾個 layer 全搞在一塊, 要那個就得 Visible 開來開去, 設計一支程式, 有一半的時間就在搞 "開關", 根本沒有產能可言, 而 embd 的 Layer 最大的敗筆就在於拉進來時是一個 "無色無味, 全透明" 的元件, 不像 Panel 至少我還可以看到這個 Layer 的大小, 所以往往我都還得在 Layer底下再加一個 Panel 或 Rectangle, 只為了能讓我在設計時看清 Layer範圍, 否則上百個元件重重相疊, 完全掌握不了, 可惜 embd 在這方面一直沒有站在開發者的立場來看待這件事, 設計者不是只要把程式設出來而已, 如何寫一支有產能的程式才是最重要的, 除非你站在研究的角度來玩 xe

回到主題,
mobile 沒有 ShowModal 的架構, 即便你使用 ShowModal, 系統還是會把這個 Form 全部執行完, 然後控制權又交回上一層form, 即便 embd 有釋出如何解決 ShowModal的方法, 但我實測是沒有效果的, 必須利用其他的寫法來處理, 所以你要的 ShowModal 是可以解決的, 但因為不是我原創, 與原提供者有協議在, 必須在特定的情況下才能釋出, 所以很抱歉不能發表, 但我有個 "假的" 的做法, 可掩人耳目, 誤以為真, 就是你要的 Form (假設是 Form B)
由 Form A Create 一個 Form B 出來, Form B 還是用 Show 方式顯示, 把 Form B 設定在畫面最大, 蓋掉 Form A, 讓 "世人" 看不到 Form A, 然後 Focus 在 Form B上, 操作完畢, 再把 Form B free 掉, 讓 Form A 重現天日, 底層是 Form A, B同時都存在, 但肉眼只看到 Form B, 也只能在 Form B 上操作, 這樣不就達成所要的目的!

但要注意, Form 開多了, 就要承受閃退的後果!
編輯記錄
P.D. 重新編輯於 2016-10-03 08:43:44, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2016-10-02 22:21:57 IP:202.39.xxx.xxx 訂閱
也就是說,Embd研發團隊已黔驢技窮,又不肯禮失求諸野,所以自斷生機?
leveon
資深會員


發表:29
回覆:386
積分:303
註冊:2012-02-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2016-10-03 17:03:43 IP:1.164.xxx.xxx 訂閱
這個陳年問題在Delphi上一直無法解決?

只要忘掉windows的阻塞式寫法,就沒那麼難吧

google了一下
http://blog.qdac.cc/?p=3588

這篇的作法和java原生的開發方式類似
code沒測 但原理都一樣 看懂後改一改就合用了
其他的奇怪作法就不要再用了吧

android作法
http://www.jollen.org/blog/2009/06/jollen-android-programming-14.html


===================引 用 kuraki5336 文 章===================
在使用Frame的時候 如果想要像TForm.ShowModal 的話
當我做完我Frame上的動作後成是在繼續往下 ,會怎麼做呢?

龜山阿萬的文章她是利用TFloatAnimation的OnFinish來做的。
覺得有點麻煩,但可行。在程式上需要多了很多的Code..。
http://www.cnblogs.com/onechen/p/3627771.html

不知道大家都是怎麼處理這個的。?




stacker_liew
初階會員


發表:48
回覆:111
積分:46
註冊:2004-05-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2016-10-03 18:06:00 IP:42.153.xxx.xxx 訂閱
Layout這個元件,應該等同Android上面的Activity吧?
還是不一樣?有沒有人可以解釋?
最新在學Android Studio,有看沒有懂,不懂有什麼資源可以參考?
===================引 用 P.D. 文 章===================
確實如 Stacker 所言, 使用 Form 會吃掉大量的資源, 如果行動裝置效能不好的, 可能會lag很嚴重, 閃退機率則要看手機, 有些手機3-5次後就閃退, 有些十來次都沒問題, 但在 ios上可能撐不到5次, 可是這是很予盾的一件事,
李維老師建議使用 TFrame 或 TTabControl 來取代Form, 但我自身的經驗, 使用 TFrame 真的很難用, 它無法展示一些 TForm 特有的功能, 使用 TTab 又因為 Tab 的切換十分麻煩(指的是在設計中), 沒有什麼比 Form 在設計上, 對設計師而言好用, 隨時可在 Form上切換, 這對設計者而言, 可有效大幅度的減少設計的浪費時間, 而我也嘗試過全部用 Layer 的來做, 但 Layer 沒有分頁的概念, 我曾一個 Form 上疊了 10來個 Layer, 然後就是惡夢的開始, 因為畫面就這麼大, 10幾個 layer 全搞在一塊, 要那個就得 Visible 開來開去, 設計一支程式, 有一半的時間就在搞 "開關", 根本沒有產能可言, 而 embd 的 Layer 最大的敗筆就在於拉進來時是一個 "無色無味, 全透明" 的元件, 不像 Panel 至少我還可以看到這個 Layer 的大小, 所以往往我都還得在 Layer底下再加一個 Panel 或 Rectangle, 只為了能讓我在設計時看清 Layer範圍, 否則上百個元件重重相疊, 完全掌握不了, 可惜 embd 在這方面一直沒有站在開發者的立場來看待這件事, 設計者不是只要把程式設出來而已, 如何寫一支有產能的程式才是最重要的, 除非你站在研究的角度來玩 xe

回到主題,
mobile 沒有 ShowModal 的架構, 即便你使用 ShowModal, 系統還是會把這個 Form 全部執行完, 然後控制權又交回上一層form, 即便 embd 有釋出如何解決 ShowModal的方法, 但我實測是沒有效果的, 必須利用其他的寫法來處理, 所以你要的 ShowModal 是可以解決的, 但因為不是我原創, 與原提供者有協議在, 必須在特定的情況下才能釋出, 所以很抱歉不能發表, 但我有個 "假的" 的做法, 可掩人耳目, 誤以為真, 就是你要的 Form (假設是 Form B)
由 Form A Create 一個 Form B 出來, Form B 還是用 Show 方式顯示, 把 Form B 設定在畫面最大, 蓋掉 Form A, 讓 "世人" 看不到 Form A, 然後 Focus 在 Form B上, 操作完畢, 再把 Form B free 掉, 讓 Form A 重現天日, 底層是 Form A, B同時都存在, 但肉眼只看到 Form B, 也只能在 Form B 上操作, 這樣不就達成所要的目的!

但要注意, Form 開多了, 就要承受閃退的後果!
kuraki5336
一般會員


發表:10
回覆:19
積分:20
註冊:2010-06-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2016-10-03 22:00:02 IP:111.252.xxx.xxx 訂閱
我是把Layout想像成 網頁語言的div。

===================引 用 stacker_liew 文 章===================
Layout這個元件,應該等同Android上面的Activity吧?
還是不一樣?有沒有人可以解釋?
最新在學Android Studio,有看沒有懂,不懂有什麼資源可以參考?
===================引 用 P.D. 文 章===================
確實如 Stacker 所言, 使用 Form 會吃掉大量的資源, 如果行動裝置效能不好的, 可能會lag很嚴重, 閃退機率則要看手機, 有些手機3-5次後就閃退, 有些十來次都沒問題, 但在 ios上可能撐不到5次, 可是這是很予盾的一件事,
李維老師建議使用 TFrame 或 TTabControl 來取代Form, 但我自身的經驗, 使用 TFrame 真的很難用, 它無法展示一些 TForm 特有的功能, 使用 TTab 又因為 Tab 的切換十分麻煩(指的是在設計中), 沒有什麼比 Form 在設計上, 對設計師而言好用, 隨時可在 Form上切換, 這對設計者而言, 可有效大幅度的減少設計的浪費時間, 而我也嘗試過全部用 Layer 的來做, 但 Layer 沒有分頁的概念, 我曾一個 Form 上疊了 10來個 Layer, 然後就是惡夢的開始, 因為畫面就這麼大, 10幾個 layer 全搞在一塊, 要那個就得 Visible 開來開去, 設計一支程式, 有一半的時間就在搞 "開關", 根本沒有產能可言, 而 embd 的 Layer 最大的敗筆就在於拉進來時是一個 "無色無味, 全透明" 的元件, 不像 Panel 至少我還可以看到這個 Layer 的大小, 所以往往我都還得在 Layer底下再加一個 Panel 或 Rectangle, 只為了能讓我在設計時看清 Layer範圍, 否則上百個元件重重相疊, 完全掌握不了, 可惜 embd 在這方面一直沒有站在開發者的立場來看待這件事, 設計者不是只要把程式設出來而已, 如何寫一支有產能的程式才是最重要的, 除非你站在研究的角度來玩 xe

回到主題,
mobile 沒有 ShowModal 的架構, 即便你使用 ShowModal, 系統還是會把這個 Form 全部執行完, 然後控制權又交回上一層form, 即便 embd 有釋出如何解決 ShowModal的方法, 但我實測是沒有效果的, 必須利用其他的寫法來處理, 所以你要的 ShowModal 是可以解決的, 但因為不是我原創, 與原提供者有協議在, 必須在特定的情況下才能釋出, 所以很抱歉不能發表, 但我有個 "假的" 的做法, 可掩人耳目, 誤以為真, 就是你要的 Form (假設是 Form B)
由 Form A Create 一個 Form B 出來, Form B 還是用 Show 方式顯示, 把 Form B 設定在畫面最大, 蓋掉 Form A, 讓 "世人" 看不到 Form A, 然後 Focus 在 Form B上, 操作完畢, 再把 Form B free 掉, 讓 Form A 重現天日, 底層是 Form A, B同時都存在, 但肉眼只看到 Form B, 也只能在 Form B 上操作, 這樣不就達成所要的目的!

但要注意, Form 開多了, 就要承受閃退的後果!
stacker_liew
初階會員


發表:48
回覆:111
積分:46
註冊:2004-05-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2016-10-04 00:27:50 IP:42.153.xxx.xxx 訂閱
官方的說法也是指這樣,但畢竟這不是網頁。
===================引 用 kuraki5336 文 章===================
我是把Layout想像成 網頁語言的div。

===================引 用 stacker_liew 文 章===================
Layout這個元件,應該等同Android上面的Activity吧?
還是不一樣?有沒有人可以解釋?
最新在學Android Studio,有看沒有懂,不懂有什麼資源可以參考?
===================引 用 P.D. 文 章===================
確實如 Stacker 所言, 使用 Form 會吃掉大量的資源, 如果行動裝置效能不好的, 可能會lag很嚴重, 閃退機率則要看手機, 有些手機3-5次後就閃退, 有些十來次都沒問題, 但在 ios上可能撐不到5次, 可是這是很予盾的一件事,
李維老師建議使用 TFrame 或 TTabControl 來取代Form, 但我自身的經驗, 使用 TFrame 真的很難用, 它無法展示一些 TForm 特有的功能, 使用 TTab 又因為 Tab 的切換十分麻煩(指的是在設計中), 沒有什麼比 Form 在設計上, 對設計師而言好用, 隨時可在 Form上切換, 這對設計者而言, 可有效大幅度的減少設計的浪費時間, 而我也嘗試過全部用 Layer 的來做, 但 Layer 沒有分頁的概念, 我曾一個 Form 上疊了 10來個 Layer, 然後就是惡夢的開始, 因為畫面就這麼大, 10幾個 layer 全搞在一塊, 要那個就得 Visible 開來開去, 設計一支程式, 有一半的時間就在搞 "開關", 根本沒有產能可言, 而 embd 的 Layer 最大的敗筆就在於拉進來時是一個 "無色無味, 全透明" 的元件, 不像 Panel 至少我還可以看到這個 Layer 的大小, 所以往往我都還得在 Layer底下再加一個 Panel 或 Rectangle, 只為了能讓我在設計時看清 Layer範圍, 否則上百個元件重重相疊, 完全掌握不了, 可惜 embd 在這方面一直沒有站在開發者的立場來看待這件事, 設計者不是只要把程式設出來而已, 如何寫一支有產能的程式才是最重要的, 除非你站在研究的角度來玩 xe

回到主題,
mobile 沒有 ShowModal 的架構, 即便你使用 ShowModal, 系統還是會把這個 Form 全部執行完, 然後控制權又交回上一層form, 即便 embd 有釋出如何解決 ShowModal的方法, 但我實測是沒有效果的, 必須利用其他的寫法來處理, 所以你要的 ShowModal 是可以解決的, 但因為不是我原創, 與原提供者有協議在, 必須在特定的情況下才能釋出, 所以很抱歉不能發表, 但我有個 "假的" 的做法, 可掩人耳目, 誤以為真, 就是你要的 Form (假設是 Form B)
由 Form A Create 一個 Form B 出來, Form B 還是用 Show 方式顯示, 把 Form B 設定在畫面最大, 蓋掉 Form A, 讓 "世人" 看不到 Form A, 然後 Focus 在 Form B上, 操作完畢, 再把 Form B free 掉, 讓 Form A 重現天日, 底層是 Form A, B同時都存在, 但肉眼只看到 Form B, 也只能在 Form B 上操作, 這樣不就達成所要的目的!

但要注意, Form 開多了, 就要承受閃退的後果!
系統時間:2017-10-20 18:23:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!