2013-04-13 72 views
1

我正在使用Delphi 7.如何獲取頁面控件上的元素?

假設我在窗體上有一個頁面控件。該頁面控件有兩個或三個選項卡。每個選項卡都有一些其他控件,如標籤,編輯等等。例如,如何獲取代碼中編輯的文本屬性?

回答

4

,您仍然可以直接訪問TEDIT

Edit1.Text := 'My Edit box on a Tab'; 
+0

謝謝你的提醒。這很容易忘記。因爲在FoxPro中,我記得,爲了訪問其他控件中的控件,您必須從父控件開始。但在德爾福情況並非如此。 – Mikhail

+0

從技術上講,在Delphi中也是正確的,但是您使用的是所有者而不是父級。 TEdit的所有者是它所在的TForm。您可以將它稱爲Form1.Edit1,但由於您已經在Form1中編寫代碼,因此您不需要此前綴。 –

10

使用其ControlCountControls屬性遍歷選項卡的控件。

for i := 0 to TabSheet.ControlCount-1 do 
begin 
    if TabSheet.Controls[i] is TEdit then 
    ShowMessage(TEdit(TabSheet.Controls[i]).Text); 
end; 

這將迭代選項卡中的所有直接子元素。如果你需要更深入地研究孩子的孩子,那麼你需要一個遞歸的解決方案。

如果你想在每個標籤頁中搜索,那麼你也需要遍歷它們。

for i := 0 to PageControl.PageCount-1 do 
    TabSheet := PageControl.Pages[i]; 
    for j := 0 to TabSheet.ControlCount-1 do 
    begin 
    if TabSheet.Controls[j] is TEdit then 
     ShowMessage(TEdit(TabSheet.Controls[j]).Text); 
    end; 
+0

謝謝你。這是很好的知識。 – Mikhail

+0

這是你問的問題的答案。你接受的另一個答案是對另一個問題的回答。 –

+0

我不同意David,因爲Mikhail指出他沒有意識到他可以用通常的方式簡單地訪問他的TEdit,你的回答非常好,但是對於另一個問題的回答是。 :) –

相關問題