TLabel、TStaticText、TLabeledEdit類的繼承關系如下:
Label組件位於Stantdard組件面板上,屬於非窗口控件,不能獲得輸入焦點。一般用來顯示一些用戶不能改動的文字或給其他一些沒有標題的組件充當標題。TStaticText類和TLabel類很類似。但Label對象沒有窗口句柄,而StaticText對象卻有。在加速鍵必須屬於窗口控件的場合下,我們可以使用StaticText代替Label。StaticText組件中有三個屬性是Label組件所沒有的。
StaticText組件多於Label組件的三個屬性
屬性 | 含義 |
BorderStyle | 可以把這個屬性設置為sbsNone(沒有邊框)、sbsSingle(細黑線邊框)或sbsSunken(立體邊框) |
TabOrder | 將這個屬性設置為StaticText條目的Tab切換順序。因為這個組件有一個窗口句柄,所以可以接收輸入聚焦(不過用戶不能在其中鍵入內容) |
TabStop | 將其設置為True時,把StaticText對象添加到其他對象列表中,這些組件在用戶按Tab鍵時可以接收輸入聚焦 |
同時,StaticText組件也缺少Label組件的兩個屬性,如下表。
StaticText組件比Label組件缺少兩個屬性
屬性 | 含義 |
Transparent | 可以通過將StaticTExt對象的Color屬性設置為與文本下面對象相同的顏色,使得StaticText控件看起來“透明” |
WordWrap | StaticText對象總是在它們所定義的長度內回繞冗長的文本。在StaticText組件內顯示長文本時,把StaticText的AutoSize屬性設置為False,否則,不管文本有多長,都將在一行中顯示,而不回繞換行 |
Label和StaticText組件響應相同的事件集。與StaticText對象相比,對於Label對象來說,單擊該對象時,提供可視化反饋要更難。
StaticText組件和Label組件都具有的屬性
屬性 | 含義 |
FocusControl | 在某些情況下可以指定加速鍵給StaticText和Label組件,然后當加速鍵按下時,改變FocusControl屬性為要接收焦點的控件名稱 |
ShowAccelChar | 是否顯示&符號,默認為True,顯示加速鍵。 |
LabeledEdit(標簽編輯框)位於Additional組件面板上。LabeledEdit對象看上去就像一個標簽對象與編輯對象的組合,事實上也確實如此。它解決了以前屢屢碰到的調整了Label對象與Edit對象的位置后,分不清楚到底哪個Label對象應該與相應的Edit對象相關聯的問題。下面列出了TLabeledEdit組件的主要屬性。
LabeledEdit組件的主要屬性
屬性 | 含義 |
EditLabel | 包含了與該控件的綁定標簽的設置,屬於TBoundLabel類,展開后可以像普通的Label控件一樣設置其標題、字體等屬性 |
LabelPosition | 標簽相對於編輯框的位置,有lpAbove、lpBelow、lpLeft、lpRight四種選項 |
LabelSpacing | 標簽與編輯框的相對距離 |
作為LabeledEdit對象的事件響應的也就包括了編輯框的事件和對應標簽的事件,在此就不贅述。
LabeledEdit的主要方法有SetBounds過程:
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
一次性設置Left、Top、Width、Height四個屬性,以避免在設置兩個屬性期間發生的重繪。