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

如何讓元件立即反應改變屬性後的型態

答題得分者是:Stallion
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-19 19:54:17 IP:220.134.xxx.xxx 訂閱
各位前輩:

我在自訂元件中使用了三個元件,作複合繼承,但是目前雖各屬性皆可以正常使用,但是當我在屬性表上,操作
自訂元件內的個別屬性時,卻不會立即反應到元件的顯示,一定要等到執行時期才會顯示,我所設定的屬性值,
如我設定三個元件的Left和With,但是元件卻不會立即移動,我有下達self.refresh,但是卻不會如我預期,不知道要
下達哪個指令,才能讓開發的元件有立即回應的狀態!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
附加檔案:464ee5699ade5_1.jpg
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-19 20:02:07 IP:220.134.xxx.xxx 訂閱
補充問題:
1.不知道有哪些事件,是在調整元件內的元件屬性(如Left和With)會觸發的。
2.有哪些事件是,當調整調整元件內的元件屬性(如Left和With),可以用於更新如Self.refresh 物件的顯示外觀。

真是困惑極了! 請各位前輩提示! 感謝


===================引 用 g9221712 文 章===================
各位前輩:

我在自訂元件中使用了三個元件,作複合繼承,但是目前雖各屬性皆可以正常使用,但是當我在屬性表上,操作
自訂元件內的個別屬性時,卻不會立即反應到元件的顯示,一定要等到執行時期才會顯示,我所設定的屬性值,
如我設定三個元件的Left和With,但是元件卻不會立即移動,我有下達self.refresh,但是卻不會如我預期,不知道要
下達哪個指令,才能讓開發的元件有立即回應的狀態!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-19 20:15:02 IP:211.22.xxx.xxx 未訂閱
不知道你的元件裡面是否有OnResize事件?有的話在裡面呼叫元件的Invalidate方法(當然!如果有的話)看看~
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-19 20:18:16 IP:220.134.xxx.xxx 訂閱
前輩:

感謝您這麼快就回應了!我的自訂元件內其實複合繼承三個元件,不知道這樣要如何呼叫前輩您所說得事件,因為我
在屬性表中設定的,其實是三個元件內的寬度。

感謝您
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-19 20:43:28 IP:220.134.xxx.xxx 訂閱
不知道要怎麼判斷,觸發我更改了繼承物件的寬度,去觸發Repaint,因為我若是直接在Repaint,下達調整位置的指令, 就會變成重複觸發,導致Delphi IDE 當掉! procedure TControl.Repaint; var DC: HDC; begin if (Visible or (csDesigning in ComponentState) and not (csNoDesignVisible in ControlStyle)) and (Parent <> nil) and Parent.HandleAllocated then if csOpaque in ControlStyle then begin DC := GetDC(Parent.Handle); try IntersectClipRect(DC, Left, Top, Left Width, Top Height); Parent.PaintControls(DC, Self); finally ReleaseDC(Parent.Handle, DC); end; end else begin Invalidate; Update; end; end;
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-20 02:21:43 IP:220.134.xxx.xxx 訂閱
前輩:

感謝您的回應,是我自己豬頭三!我找到問題點了! 原來我沒有處理好,物件順序擺放的函數!

不過經由前輩的提示,我又找到一些可以改善的寫法了!謝謝您!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-04-28 4:00:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!