2013-04-13 2 views
1

Я работаю с Delphi 7.Как добраться до элементов управления страницей?

Предположим, у меня есть элемент управления страницей на моей форме. Элемент управления этой страницей имеет две или три вкладки. На каждой вкладке есть несколько других элементов управления, таких как ярлык, редактировать и т. Д. Как получить, например, свойство текста редактирования в коде?

ответ

4

Вы все еще можете получить прямой доступ к TEdit

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

Благодарим за хорошее напоминание. Это очень легко забыть. Поскольку в FoxPro, из того, что я помню, чтобы получить доступ к элементам управления в других элементах управления, вы должны начать с родительского элемента управления. Однако в Delphi это не так. – Mikhail

+0

Ну, технически это верно и в Delphi, однако вы используете владельца, а не родителя. Владелец TEdit - это TForm, в котором он включен. Вы можете ссылаться на него как на Form1.Edit1, но так как вы пишете код в Form1, вам уже не нужен этот префикс. –

10

Итереть через элементы управления таблицей, используя ее свойства ControlCount и Controls.

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

Я не согласен с Дэвидом, как указал Михаил, он не понимал, что может просто получить доступ к своему TEdit обычным способом, ваш ответ очень хороший, но ответ на другой вопрос. :) –

Смежные вопросы