2012-06-13 22 views
3

解決方案有幾個類似的問題,但沒有人回答我的問題,所以在這裏。面板更改尺寸時,如何在面板的底部或右側保持控件?

製作一個TPanel崩潰/擴大與TButton它是非常簡單,或者所以我想。我玩了一圈,通過將按鈕放在最頂部(用於從上到下擴展/縮小高度)或左(從左到右擴展/縮小寬度),一切按計劃進行。事實上,所有可擴展/可摺疊的「高級」面板都以完全相同的方式工作 - 按鈕僅放置在頂部或左側。很快我就碰到了一堵牆:如果你把按鈕放在底部或右邊分別放大或縮小高度或寬度,按鈕會保持在他們所在的位置......客戶區(?) - 我缺乏解釋的知識這是正確的,但我會認爲,除非另有指出,清楚發生了什麼。關鍵是,以我這樣做的方式,唯一的解決方案是重新定位面板內的按鈕,但這可能會放在其他一些根本不應該看到的組件上。

所以問題是:我該如何使這種情況正確發生?因爲我調整面板大小然後重新定位按鈕的想法看起來並不像這個問題的正確方法。另外,我很樂意採取這樣做的一些組件,但是從我檢查過的組件中看,所有組件都是相同的,即使JEDI VCL TJvRollOut組件也可以將Placement(的按鈕/標題)設置爲plTopplLeft,所以我在想這不是那麼簡單嗎?

+0

類似'AnimateWindow(Panel1.Handle,250,AW_SLIDE或AW_HOR_POSITIVE或AW_HIDE);'? – TLama

+0

動畫真的很有必要嗎?它可能會導致很多閃爍 – hubalu

+0

@TLama,事實被告知,我從來沒有使用過或看過過AnimateWindow,我必須去閱讀它,除非你可以在這裏用幾句話解釋,或者發佈一個回答,所以我現在可以在我的程序 – Raith

回答

6

設置爲您的按鈕Anchors屬性爲[akLeft, akBottom]

enter image description here

+2

現在我知道'Anchors'是做什麼的。非常感謝你。我知道他們在哪裏,但從來不需要他們,所以從來沒有看過他們做什麼。我很愚蠢,我很抱歉。 – Raith

0

有用於調節任何工具的在Delphi對準兩個屬性:

  1. 對齊(alNone,alLeft,正常的,是alTop ....)

  2. 錨(akLeft,akRight,akTop,akBottom)

eg 你有一個面板,並在TPanel上拖動一個TEdit。現在,您希望TEdit只佔用TPanel的左上角,並且它與面板的底部和右側角的距離應該保持不變,而不考慮更改面板大小(這意味着如果將面板沿着底部或右側邊角擴展)。

  1. Set Align-> alNone。 (不是alLeft,否則tEdit將佔據面板上的整個左側區域,而不僅僅是左上角)。
  2. Set Anchors-> akLeft = akTop = akRight = akBottom = True。 如果您設置akLeft = akTop = True,並且akRight = akBottom = False:那麼TEdit的大小在沿着底部或右角展開面板時保持不變。