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

怎样提高TForm的显示效率?

尚未結案
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-17 19:55:09 IP:61.165.xxx.xxx 未訂閱
由于form上控件很多,在form.active上做了一些控件的格式设定。但是这样一来,form.show的速度就变得很慢,不知道有什么好办法可以提高效率又能完成格式设定呢?请教请教
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-18 21:20:21 IP:61.165.xxx.xxx 未訂閱
这个问题应该放在delphi中的,
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-02 23:32:09 IP:203.204.xxx.xxx 未訂閱
引言: 由于form上控件很多,在form.active上做了一些控件的格式设定。但是这样一来,form.show的速度就变得很慢,不知道有什么好办法可以提高效率又能完成格式设定呢?请教请教 < face="Verdana, Arial, Helvetica"> Amanda_Chen 你好 如果Form裏的控制不是動態建立的話,你可以把一些控件的格式设定的程式寫在OnCreate事件中,不然就是要檢查格式設定的程式碼中有沒有多餘的動作?
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-03 09:12:17 IP:218.167.xxx.xxx 未訂閱
我在討論區學到一招,您可以參考看看 Form1->DoubleBuffered = true; 這是 BCB 的做法,至於 Delphi 有沒有 DoubleBuffered 的 Member ,我就不清楚了...^^ Baby
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-03 10:45:11 IP:147.8.xxx.xxx 未訂閱
Delphi and BCB use the same VCL, so DoubleBuffered exists for Delphi. BTW, I think using the api LockWindowUpdate may help....
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-06 20:30:04 IP:61.165.xxx.xxx 未訂閱
謝謝各位大大回應,幾天沒注意,沒想到已有回復,不好意思,今天才看到。現在才作回應。 Chance 大大:onCreate 與 onActive 有何區別呢?我指在表單設置上。我一直以為它們只是觸發的時機不同而已呀? CuteBabyBoy 大大:Delphi中確實有doubleBuffered。有照您的方法改,放在了表單的Active中,好象沒有太大的改觀呀?是否設置的地方不對? William Uncle: I know little about the api LockWindowUpdate. I’ve found the help document on the SDK. But got nothing about how to use it. Can you tell me more about it? As you see, I’m a little foolish.
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-06 21:11:58 IP:211.20.xxx.xxx 未訂閱
引言: onCreate 與 onActive 有何區別呢?我指在表單設置上。我一直以為它們只是觸發的時機不同而已呀?
Amanda_Chen 你好 確實是觸發的時機不同, 1.OnCreat:當該Form被建立時觸發,所以只要Form沒被釋放,它從頭到尾才被觸發一次而已。 2.onActive:觸發時間點在Form取得焦點時(Form1.SetFocus被設為True時),如在MDIForm中有兩個子Form A和B,當點A時A會觸發onActive事件,再點到B時,B Form會觸發B.OnActive事件,而主視窗或非MDIForm的onActive會在焦點從別的應用程式切回來時觸發(點選已開啟其他程式如NotePad、Word、...再點選回來時),也就是應用程式取得焦點時。而觸發的次數則是從1次到n次。
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-07 10:24:09 IP:147.8.xxx.xxx 未訂閱
[quote]William Uncle:  I know little about the api LockWindowUpdate. I’ve found the help document on the SDK. But got nothing about how to use it. Can you tell me more about it? As you see, I’m a little foolish./quote]    Uncle < > > < > < class="code">LockWindowUpdate(Form1->Handle); try { /* configure your controls */ } __finally { LockWindowUpdate(0); }
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-08 07:43:56 IP:61.165.xxx.xxx 未訂閱
謝謝大大們的回復。 To Chance 大大:謝謝您更深入地解釋了Active 與 Create 的不同。 To William :  On  K.Top, I found  person here like to use ‘大大’ expressing their respect for  the master-hand no matter how old he is. At very beginning, I was a little puzzled. But at last, I like to use the word by myself because ‘能者為大’  is not the new idea in Chinese culture. In my thought, ‘大大’  is father’s elder brother while uncle maybe is younger than father in English. But I cannot use old uncle. So,you see. ‘Uncle’  is not the hint your age. Hehe.  class="code"> ADOTable1.active:=true; ADOTable2.active:=true; … My question is when LockWindowUpdate seem not influence these kind of code, what can I do for it?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-05-10 09:53:28 IP:147.8.xxx.xxx 未訂閱
What is the problem in opening an ADO table? Do you mean opening the tables are slow? I think you could use ADO in a multi-thread environment while each thread needs its only ADOConnection... otherwise marshaling. I would suggest finding out why the table opening takes so long time.
系統時間:2024-06-26 19:50:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!